slan's blog

有梦就去追,累了就休息

通用问题分析定位办法

最近一年做了大量云环境的问题定位,各种层面,产品,环境,逐渐总结出了一套通用的分析问题办法。我把他叫做:"SRE通用问题解决办法"。这个方法直接说结论,很简单的一句话概述:问题的解决过程就是不断分层建模,提取信息的过程(套用柯P的话:如果你现在很难猜的时候,标准动作: collect more information)。

在云环境,因为无法知晓客户的数据、架构,并且客户的sre体系建设层次不齐,能拿到的关键信息也有限,这就让我们得在有限的信息下,做大量的推测与验证才能解决问题。通常我拿到一个问题,先建立一个顶层模型,然后基于这个模型,不断深入下层建模,把信息都挖掘出来,随着模型的完善,信息的逐步显露,问题原因经常就自己出来了。例如:

访问域名不通的诊断案例

某客户反馈域名有些地方ping有丢包,无法连接上。那么我们建立第一层模型,以及信息:

graph TD;
    网民A--不通-->域名;
    网民B--通-->域名;

信息:

  1. 验证能ping通
  2. 想办法验证ping不通,访问不通

一轮验证下来,没办法复现问题,继续和客户沟通,网民A不通的具体模型,是ping不通,还是网站访问不了,网站协议多少

graph TD;
    网民A_全国17ce多个节点--http网站打不开-->域名;
    网民B--通-->域名;

第二层精确很多,而且能验证了,验证发现,17ce正常的,都返回200,为什么客户反馈打不开呢,基于这个疑问继续问客户,后面发现打不开的内容返回是一个域名过期页面,虽然正常返回了200,于是问题定位到是客户域名过期,301到了dns服务商的过期页面。

这个案例虽然简单,也能简单说明,层层完善模型,在快速问题诊断验证上,有不错的效果。