一、背景面对日益复杂的分布式微服务架构,传统IT运维面临的压力和挑战与日俱增,任何一次服务中断都会对公司业务造成极大影响,因此当故障发生时,面对海量监控数据和庞大的分布式系统,仍依赖运维人员在高压下人力做出迅速、准确的运维决策,这显然是不现实的。就我们公司目前情况:1.监控质量较低,未能准确告警,经常发现问题已是1、2个小时之后,很多还依赖用户反馈。2.告警事件多产生告警风暴、告警疲劳,干扰定位问题3.定位问题复杂,依赖人工定位问题,由于链路长,处理故障时间长,平均处理一次故障约47分钟以上1.1什么是根因分析根因分析方法广泛应用于IT和医学等领域。著名IT研究机构Gartner为根因分析给出的定义,是一种旨在将当前条件与过去采集到的结构化/非结构化数据模式进行匹配的复杂分析方法,根因分析的目标是尝试定位一个系统错误的问题根源。1.2为什需要根因分析异常检测旨在表明某些不正常现象,而根因分析则试图阐明“是什么问题”、“为什么发生问题”、“问题的最佳解决方案是什么”,这一系列目标需要准确性和精确性根因分析的优点:实施效果良好的根因分析会大幅缩短系统中断后的平均故障恢复时间(MTTR);根因分析可以减少对经验的依赖,并可以通过定向响应进行更多的机械补救;如果精度和准确度足以满足用例的要求,根因分析将为智能自动化开启大门;二、目标基于故障诊断专家系统提升故障发现、故障诊断能力(暂时不做故障自愈),逐渐减少人力在运维决策中所占的比例,逐渐增加自动化运维决策的比例故障定位时间:由原来20min以上缩短至5分钟左右线上事故覆盖率提升至98%+提升检测准确率,精准告警,减少告警骚扰运维成本:配置域值、校准阈值、大量报警、人工分析->智能根因分析三、方案3.1基于故障树的专家分析推理系统故障推理的过程就是模拟人工专家的思维,从一个表象抽丝剥茧般的发掘根因的过程。这种故障根因分析系统行业内目前大概有三种方式,一种是基于决策树(统计学机器算法),一种是知识图谱,还有一种是基于规则引擎。通过对上述三种方式分析及公开的互联网公司应用资料分析,最终考虑基于故障树建一套专家分析推理系统,理由:技术门槛低,可执行程度高可以很快看到效果,基于机器学习依赖大量模型训练,不能保证准确率根因分析基于足够的监控数据是无需猜测,而是有迹可寻,基于专家知识推理更靠专家故障推理知识库是可以被不断检测和完善的,帮助推理系统更加成熟3.2什么是故障树定义:故障树是以系统不希望发生的一个顶事件作为分析的目标,是一种特殊的倒立树状逻辑因果关系图,它用事件符号、逻辑门符号和转移符号描述系统中各种事件之间的因果关系。逻辑门的输入事件是输出事件的"因",逻辑门的输出事件是输入事件的"果"。故障树是一种逻辑因果关系图,构图的元素是事件和逻辑门。事件用来描述系统和部件(功能)的故障状态逻辑门把事件联系起来,表示事件之间的逻辑关系故障树分析:通过对可能对造成产品故障的硬件、软件、环境、人为因素进行分析,画出故障树,从而确定产生故障原因的各种可能组件方式或其发生概率。定性分析定量分析目的:了解最上方事件和下方不希望出现状态之间的关系。显示系统对于系统安全/可靠度规范的符合程度。针对造成最上方事件的各原因列出优先次序:针对不同重要性的量测方式建立关键设备/零件/事件的列表。监控及控制复杂系统的安全性能最小化及最佳化资源需求。协助设计系统。故障树分析可以作为设计工具,创建输出或较低层模组的需求。诊断工具,可以用来识别及修正会造成最上方事件的原因,有助于创建诊断手册或是诊断程序。事件符号:事件符号说明备注顶事件人们不希望发生的显著影响系统技术性能、可靠性、安全性的故障事件底事件系统运行过程中发生的故障事件中间事件故障树中除底事件及顶事件之外的事件逻辑符号:建故障树方法:第一步去寻找所有引起顶事件的直接原因(中间事件)第二步再分别找上述每个直接原因的所有直接原因,依次进行,直至最基础的直接原因(底事件)用一定符号建树,表达上面的关系示例:最小割集:故障树的底事件集合:X={X1,X2,X3,....Xn}X的一个子集:K={Xi,Xi+1...