Skip to content

Latest commit

 

History

History
246 lines (214 loc) · 15.6 KB

rca.md

File metadata and controls

246 lines (214 loc) · 15.6 KB

RCA分析

基础理论

  • 概率图 graphical model
    • 概率图模型是用图来表示变量概率依赖关系的理论,结合概率论与图论的知识,利用图来表示与模型有关的变量的联合概率分布
    • 贝叶斯网络Bayesian Network(有向图模型.因果关系)
    • 马尔可夫网络Markov Network(无向图模型.相关关系)
  • 决策树从样本的观测数据-对应决策树的分支,推断出该样本的预测结果-对应决策树的叶节点.分类树/回归树.
    • ID3,核心思想就是以信息增益来度量特征选择,选择信息增益最大的特征进行分裂
    • C4.5,信息增益率来作为分类标准
    • CART (Classification and Regression Tree),使用 Gini 系数作为变量的不纯度量
    • 集成学习方法
      • 个体学习器间存在强依赖关系,必须串行生成的序列化方法,Boosting
      • 个体学习器间不存在强依赖关系、可同时生成的并行化方法,Bagging和“随机森林”
      • Stacking方法是指训练一个模型用于组合其他各个模型
    • Bagging, 是一个早期的集成方法,用有放回抽样法来训练多棵决策树,最终结果用投票法产生。
    • 随机森林(Random Forest) 使用多棵决策树来改进分类性能。
    • 提升树 (Boosting Tree) 可以用来做回归分析和分类决策,提升方法实际采用加法模型(即基函数的线性组合)与前向分步算法。以决策树为基函数的提升方法称为提升树(boosting tree)
      • 提升树模型可以表示决策树的加法模型
      • Regression Decision Tree:回归树,平方误差(拟合残差)
      • Boosting Decision Tree:提升树算法
      • Adaboost
      • GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。它在被提出之初就和SVM一起被认为是泛化能力较强的算法。
      • xgboost 的全称是eXtreme Gradient Boosting
        • GBDT是在函数空间上利用梯度下降进行优化,GBDT是多个弱分类器合成强分类器的过程(加权求和),每次迭代产生一个弱分类器,当前弱分类器是在之前分类器残差基础上训练。目标:损失函数尽可能快减小,则让损失函数沿着梯度方向下降。--> gbdt 的gb的核心了。
        • Adaboost是通过提高错分样本的权重来定位模型的不足,采用指数损失,基分类器是最常见为决策树(深度为1)
        • XGBoost应用牛顿法(二阶泰勒展开),加入正则项,对每棵树的复杂度进行惩罚,防止过拟合
    • 旋转森林(Rotation forest) – 每棵树的训练首先使用主元分析法 (PCA)
  • 贝叶斯
  • 马尔可夫决策过程 (Markov Decision Process, MDP) 概念:其未来由现在决定的程度,使得我们关于过去的知识丝毫不影响这种决定性。这种在已知“现在”的条件下,“未来”与“过去”彼此独立的特性就被称为马尔可夫性,具有这种性质的随机过程就叫做马尔可夫过程,其最原始的模型就是马尔可夫链。
    • [马尔可夫过程]这种在已知“现在”的条件下,“未来”与“过去”彼此独立的特性就被称为马尔可夫性,具有这种性质的随机过程就叫做马尔可夫过程,其最原始的模型就是马尔可夫链。
    • [马尔科夫链] 马尔可夫链(Markov Chain, MC)是概率论和数理统计中具有马尔可夫性质(Markov property)且存在于离散的指数集(index set)和状态空间(state space)内的随机过程(stochastic process)
    • [马尔可夫过程(Markov process)]适用于连续指数集的马尔可夫链被称为马尔可夫过程(Markov process)
    • [马尔可夫逻辑网](Markov Random Field,也叫马尔可夫网)拿种地打比方,如果任何一块地里种的庄稼的种类仅仅与它邻近的地里种的庄稼的种类有关,与其它地方的庄稼的种类无关,那么这些地里种的庄稼的集合,就是一个马尔可夫随机场。
    • [隐马尔可夫模型]隐马科夫(HMM)模型全称:Hidden Markov model,是一种统计学的模型,是马科夫链与无法观察的状态的结合。隐马尔可夫模型
  • 蒙特卡罗
    • 蒙特卡罗树搜索, MCTS,搜索树: 选择(Selection)->扩展(Expansion)->模拟(Simulation)->回朔(Backpropagation)
    • 蒙特卡罗方法,蒙特卡罗方法也成统计模拟方法,是指使用随机数(或者更常见的伪随机数)来解决很多计算问题的方法。他的工作原理就是两件事:不断抽样、逐渐逼近。
  • 逻辑回归 Logistic regression
  • 随机场
    • 条件随机场 CRF, 条件随机场是条件概率分布模型 P(Y|X) ,表示的是给定一组输入随机变量 X 的条件下另一组输出随机变量 Y 的马尔可夫随机场,也就是说 CRF 的特点是假设输出随机变量构成马尔可夫随机场。条件随机场可被看作是最大熵马尔可夫模型在标注问题上的推广。
    • 马尔可夫随机场 MRF
    • 吉布斯随机场 GRF
    • 高斯随机场
    • 线性链式条件随机场 linear-Charin CRFs
    • 条件概率分布 CPD conditional probability distribution
    • 通用条件随机场

方法

  • 数据集合(metric集合/日志/异常/告警/Event)->RCA根因分析(相关性算法/决策树...)->根因
  • 专家系统/专家知识

RCA模型

确定性模型

  • 在确定性模型中,已知事实或模型中表达的推论不存在不确定性。
  • 模型
    • 逻辑推理
      • 命题逻辑(规则集)
      • 一阶逻辑
      • 故障树
      • 溯因逻辑程序
    • 编译
      • 逻辑编程 --- Datalog
    • 分类
      • 决策树
      • SVM 支持向量机,监督学习,决策边界是对学习样本求解的最大边距超平面(maximum-margin hyperplane)
    • 过程模型
      • 自动机/有限状态机
      • Petri网

概率模型

  • 概率模型能够处理这种不确定性。
  • 模型
    • 逻辑推理
      • 模糊逻辑
      • 登普斯特-沙弗理论
      • 模糊故障树
      • 概率逻辑推理
      • 非公理逻辑
    • 贝叶斯
      • 贝叶斯网络
      • 概率关系模型
      • 贝叶斯溯因逻辑程序
      • 马尔可夫逻辑网络
      • 和积网络
      • 关系和积网络
      • 动态贝叶斯网络
      • 隐马尔可夫模型
    • 编译
      • 算术电路
    • 分类
      • Bayesian MSVM [61], LS-WSVM
      • 概率神经网络
    • 过程模型
      • 随机DES
      • 随机Petri网

Append

技术描述

  • 动态贝叶斯网络(DBN)
  • 深度信念网络(DBN)
  • 故障树分析法 (FTA )
    • 基于贝叶斯网络的故障树分析
    • 故障树分析法 (FTA ) 是一种对复杂系统的可靠性、安全性进行分析的有效工具, 它把所研究系统的最不希望发生的故障状态作为故障分析的目标, 然后寻找导致这一故障发生的全部因素, 再找造成这些因素发生的下一级全部直接因素, 一直追查到那些原始的、无需再深究的因素为止L 利用故障树可以分析系统发生故障的各种途径, 计算各个可靠性特征量, 对系统的安全性和可靠性进行评价L。
  • [关联分析算法]
    • [Apriori算法]
    • [FP-growth算法]
  • 智能运维的常见算法
    • 逻辑回归
    • 关联关系挖掘(事件-事件、事件-时序数据、时序数据-时序数据)
    • 聚类
    • 决策树
    • 随机森林
    • 支持向量机
    • 蒙特卡洛树搜索
    • 隐式马尔科夫
    • 多示例学习
    • 迁移学习
    • 卷积神经网络
    • 递归神经网络(RNN)
    • 变分自动编码(VAE)

实现

根据权利要求1所述的基于运行时图谱分析的微服务故障定位方法,其特征在于,基于运行时图谱的故障定位阶段,具体流程为:

  • 触发故障定位过程 当系统出现显式的请求错误之后,即可触发故障定位过程;显式的请求错误包括请求结果报错、请求响应时间明显超出正常范围;
  • 计算图谱各个节点异常度 节点异常度是对图谱中各个节点的运行状况偏离正常的程度的度量;图谱中的监控节点中存储着对应节点过去各个时刻的监控指标数据;使用某个时刻的指标值与过去一段时间指标值的均值的差值相对于标准差的比值,作为该组件的异常度;定义A(t)为某个被监控节点在t时刻的异常度;t为距离故障发生时刻最近的监控数据采集时刻;vt为t时刻该节点监控指标的取值,vt-1为自t时刻向前第一次的监控指标取值,vt-2为自t时刻向前第二次的监控指标取值,以此类推;μt为t时刻前n次监控指标值的均值;σt为t时刻前n次监控指标的标准差;那么对于某个被监控节点,其在t时刻的异常度A(t)计算方法如下: 具体包括以下子步骤:
    • 获取故障发生最近时刻之前的若干次监控指标数据;
    • 计算故障发生前数据的均值与标准差;
    • 计算故障发生最近时刻监控指标值与均值之差对于标准差的比值,比值结果作为该节点异常度;
    1. 分析异常度传播关系 结合图谱的拓扑结构和各个组件的异常度,并分析异常度在图谱中的传播关系,来寻找多个异常组件之间的共因,进而确定最终的故障定位结果;具体包含以下子步骤:
      • 以每个监控节点作为起点,广度优先遍历逐层向外传播其异常度,每层向外传播的异常度乘以一个阻尼系数;
      • 传播结束后每个节点都会收到若干个异常度值,对其进行求和得出每个节点的异常度总值,作为每个节点的最终累计异常度;
    1. 整理结果并输出 将结果整理并排序后输出;开发人员按照结果中的顺序对故障位置进行排查,并判定最终故障位置。
  • 清华阿里AIOps新作:基于因果分析的微服务内根因定位

携程机票的故障定位

异常检测

  1. prophet
  2. 有监督异常检测
  3. 无监督异常检测/半监督异常检测
  4. 单指标异常检测算法(多指标异常检测、面向文本日志的异常检测、对交易链条的异常检测、异常机器定位、异常多维定位、变更故障定位、交易链条定位)
  5. 聚类学习/迁移学习

根因分析

  1. 触发故障定位过程: 订单维度的业务告警出发
  2. 依赖关系图 调用图谱/关系图 从历史日志中获取应用/数据库/Redis调用关系
  3. 事件信息 从变更中心获取所有的变更
  4. 计算节点异常度
    1. 根据告警/智能告警
    2. 根据黄金四指标的变化,饱和度/请求量/错误量/延迟
  5. 故障传播关系 A调用B A--Call-->B 怎么确定故障传播关系
    1. 上下游
    2. 时间先后
    3. 异常实体(链接异常/超时/...) 清华裴丹:基于 AIOps 的无人运维
  6. 根因分析
    • 评分算法
    • 排序算法

算法实现

基于发布的下游异常统计算法(已经实现,效果很差,基本属于废弃)
  • http://rcamonitor-ui.fws.qa.nt.ctripcorp.com/#/rcaresult
  • 从数据库fltservicerelationship中获取应用于服务.调用关系.op级别的调用关系
  • 将关系输入到matrix数据结构中
  • noc的接口中获取当前24前所有的变更/告警/Event
  • 以变更为基础,检查变更后,其下游出发的告警情况,如果有告警则记分
    • 关注30分钟内的告警,10分钟为一段,风险值指数下降
    • 历史有告警,则再次减分
    • 合计所有下游告警风险分,然后除以下游应用数
  • 最后按照记分排序
  • 存在问题
    • 记分规则纯想象,得出结果差
    • 没有先验规则.没有专家规则
    • 应用异常的判定是依赖OPS的CAT智能告警
基于故障传播树的算法(计划中)
  • cat大盘
  • 构造调用关系树(图)
  • 获取应用的30分钟异常,30分钟告警,时间段的变更,结合调用树,生成故障调用关系树
  • 根据异常类型,剪枝
  • 对每个节点计算,广度优先遍历逐层向外传播其异常度,每层向外传播的异常度乘以一个阻尼系数;0.7
  • 排序显示
基于动态贝叶斯网络模型的算法(计划中)