论文标题丨CloudRCA: A Root Cause Analysis Framework for Cloud Computing Platforms
论文来源丨CIKM 2021
论文链接丨https://dl.acm.org/doi/abs/10.1145/3459637.3481903
源码链接丨暂未开源

TL;DR

这篇论文中提出了一种新颖的根因分析框架 CloudRCA,基于当前的异常检测和日志技术来提取多源异质数据(KPIs、logs 和 topology)的重要特征,然后利用分层贝叶斯网络(KHBN)对提取的特征进行根因分析。实验结果表明 CloudRCA ① F1-score 优于当前其它根因定位方法 ② 基于 KHBN 可以处理新类型的根因 ③ 在算法配置方面鲁棒性更强 ④ 适用于不同规模的数据和特征大小。在阿里生产环境中可以提升 10% 定位准确率来节省 SRE 20% 定位时间。

Algorithm/Model

CloudRCA 主要框架如下图所示

CloudRCA 框架

主要需要处理三种数据源:

  • Kpis:时间序列异常检测算法提取特征;
  • Logs:日志聚类提取特征;
  • Topology:模块依赖关系和专家知识;

指标异常检测

主要是通过 RobustSTL 算法[1]对时间序列进行分解,然后通过不同的统计测试方法对分解项来检测不同类型的异常点。主要的异常类型及其对应的检测方法如下

异常检测

日志模板提取

采用基于 FT-tree 改进的 AFT-tree(Adaptive Frequent Template tree) 来提取日志模板,改进点包括:1)采用字典保存孩子节点,避免重复插入节点 2)采用节点的叶子节点剪枝。

对于提取的日志模板,采用 word2vec + hierarchical clustering 方法进行聚类来获取日志模式。

层次贝叶斯网络

基于日志和指标特征,再结合 CMDB 中配置的模块对应的故障类型来构造层次贝叶斯网络(KHBN),模型结构如下图所示

KHBN 模型

KHBN 模型主要通过两个阶段来构造依赖关系,然后再通过历史数据训练模型。

  1. 根据 CMDB 初始配置边;
  2. PC 算法挖掘的指标间的因果关系;

收集下专家知识:不同模块对应的根因类型如下表所示

根因类型

Experiments

实验部分采用阿里三个平台的数据,与不同 baseline 根因定位的对比效果如下

实验结果

随便看下消融实验

实验结果

Thoughts

  • 文章结合 Kpis、Logs 和 Topology 多种数据源提出有监督的根因定位模型 KHBN,主要创新在于模型中方法的设计,因为多源数据融合的思路之前已经提出过。✅
  • 提取指标和日志得到特征矩阵的过程文章中说明的有些模糊。❌
  • 至于主要的贝叶斯网络 KHBN 其实不是非常重要,其它分类器同样能达到相同目的。❌
  • 实验部分在自家云平台数据中因此观赏下即可,有监督的模型还是难迁移。


  1. Qingsong Wen, Jingkun Gao, Xiaomin Song, Liang Sun, Huan Xu, and Shenghuo Zhu. 2019. RobustSTL: A robust seasonal-trend decomposition algorithm for long time series. In Proceedings of the AAAI Conference on Artificial Intelligence, Vol. 33. 5409–5416. ↩︎