B. 智能运维 --- 质量保障 --- 根因分析

B. 智能运维 — 质量保障 — 根因分析

概述

  • 分析意图
    • 根因:数据分析、机器学习的方法
    • 解释:推理引擎,需要展示推理过程,逻辑推理、状态机等方法
  • 分析时间
    • 实时诊断
    • 事后诊断
    • 分析时长的因素
      • 系统大小:组件数
      • 数据大小
      • 推理长度:要从症状中找到故障,必须遍历的最大部件数。如果此长度为零,则表示所有故障都是症状,诊断只是异常检测任务的输出。由于这类系统的诊断是异常检测的任务,因此我们将限制在推理长度至少为1的系统上。
      • 效应传播窗口:更改系统的一个组件可能需要时间来修改相邻组件的状态。在一些诊断系统中,效应传播时间被忽略或认为是即时的,例如在医学诊断中,相关观察的时间窗口由医生决定,但在其他情况下,效应传播时间定义了相关观察的窗口,从而影响了观察数据的大小。
      • 系统的进化速度:被诊断系统变化的速度和程度。在缓慢变化的系统中(比如在一个成熟的医疗领域的医疗诊断应用程序中的人类健康),它可能需要专家创建一个精确的手动模型,因为一旦完成,模型将只会有微小的变化。
      • 需要领域知识:系统领域的知识量。例如,如果为Hadoop安装构建一个诊断系统,那么诊断系统的设计者就可以获得Hadoop的知识。
      • 需要系统知识:指示诊断系统对已诊断系统的访问级别。这个维度的范围从黑框(即没有可用的信息)到白框(即所有可用的内部信息),即使有可能改变系统。请注意,这与领域知识是正交的,例如,可以访问Hadoop代码,但不知道Hadoop是如何工作的。
    • 生成模型的推理方法
      • 手动生成:在这种情况下,一组专家提供了模型。以这种方式生成的模型往往非常精确,但知识获取是一个复杂而缓慢的过程[82]。对于进化率很高的系统,这种方法可能不实用。
      • 辅助生成:辅助生成方法需要以子模型库和/或特定组合算法的形式提供大量的领域知识,以及能够生成最终诊断模型的详细系统信息。文献中应用于工业环境的大部分RCA系统都属于这一类,因为它在手动规格的质量和整个模型的构造自动化之间提供了一个很好的折衷方案。
      • 自动生成:RCA的模型完全由数据生成,使用标准的非即席算法,其中可能包括观测值和可用的系统知识。这是唯一可行的解决方案,如果它是不可能或实际获得领域知识。

RCA 模型

  • 确定性模型
    • 在确定性模型中,已知事实或模型中表达的推论不存在不确定性。
    • 模型
      • 逻辑推理
        • 命题逻辑(规则集)
        • 一阶逻辑
        • 故障树
        • 溯因逻辑程序
      • 编译
        • 逻辑编程 — Datalog
      • 分类
        • 决策树
        • SVM
        • 支持向量机
      • 过程模型
        • 自动机/有限状态机
        • Petri网
  • 概率模型
    • 概率模型能够处理这种不确定性。
    • 模型
      • 逻辑推理
        • 模糊逻辑
        • 登普斯特-沙弗理论
        • 模糊故障树
        • 概率逻辑推理
        • 非公理逻辑
      • 贝叶斯
        • 贝叶斯网络
        • 概率关系模型
        • 贝叶斯溯因逻辑程序
        • 马尔可夫逻辑网络
        • 和积网络
        • 关系和积网络
        • 动态贝叶斯网络
        • 隐马尔可夫模型
      • 编译
        • 算术电路
      • 分类
        • Bayesian MSVM [61], LS-WSVM
        • 概率神经网络
      • 过程模型
        • 随机DES
        • 随机Petri网
  • 评估算法的维度
    • 多根因:如果算法能够找到多个并发故障(✓),或者只返回最多一个故障(✗)。有些方法只在假设最多可以有k个不同的并发故障的情况下工作。表中用k表示。
    • 能否给出明确的根因:如果算法给出了相应推理概念的确切答案(✓)或否(✗)。否定答案可能是因为算法使用某种启发式来减少搜索空间,或者是因为它是一种迭代方法,随着时间的推移收敛到正确的答案,适用于需要anytime算法的情况。
    • 是否需要完备信息:该方法能够在症状信息不完全(✓)的情况下进行诊断。另一方面,(✗)表示算法要求症状变量的值都是可用的,即所有症状都是阳性或阴性。
    • 是否需要知道变量跟根因的对应关系:该算法不需要知道哪些变量(或变量值)对应于潜在的根因,因此它必须评估每个变量在结果中的贡献,以确定哪个变量子集对产生症状有更大的影响(✓)。如果需要知道潜在失效变量,并确定失效值,则用(✗)表示。
    • 针对现象,是否具有鲁棒性正/负症状信息可能是错误的,算法仍然可以提供合理的(取决于噪声量)答案(✓)。如果算法需要精确的症状信息,则(✗)。
    • 故障的不完美传播该算法能够考虑到故障不会完全传播:错误有可能在系统的某个部分被掩盖,而不会传播到其他连接的元素(✓)。
    • 算法的适应性解决问题的一个实例提供了一个内部状态和一个解决方案,该解决方案可用于类似的查询或作为新信息(证据)可用。

案例

  • 机器学习定位故障责任部门 — 微软 NetPoirot
    • 特点
      • 轻量级的持续监控:仅需收集TCP的数据,避免收集整个系统海量的日志(SNMP,网络拓扑,性能指标,程序日志等)。
      • 准确的机器学习分类:利用决策树/随机森林来实现自动且准确的根因分类。
      • 简单的系统实现:不需要了解系统方面的信息,包括网络拓扑,程序模块关系等。
    • 解决方案
      • 训练阶段:由于异常的数据远远比正常的时候少,不利于机器学习,NetPoirot还可以模拟注入一些故障,丰富异常数据集,提升模型的准确度
      • 运行阶段
    • 模拟注入故障类型
      • Server
        • High CPU load on Server
        • Slow reading Server
        • High I/O on Server
        • High memory load on server
      • Client
        • High CPU load on client
        • High I/O on client
        • High memory load on client
      • Network
        • Bandwidth throttling
        • Sporadic packetdrops
        • Packet reordering
        • Random connections drops
        • High Latency
  • 微软AIOps工作:时序数据与事件的关联分析
    • 解决核心问题
      • E和S之间是否存在相关关系?
      • 若存在相关关系,E和S的时间先后顺序是什么?E先发生,还是S先发生?
      • E和S的单调关系。假设S(或者E)先发生,S的增加还是降低导致的E发生?
    • 具体实现
      • 相关性:???
      • 时间先后顺序
      • 单调关系
  • 美团的日志聚类,实现根因分析

你可能感兴趣的:(智能运维,根因分析)