清华阿里AIOps新作:KPI波动关联分析助力故障排查

Posted 智能运维前沿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了清华阿里AIOps新作:KPI波动关联分析助力故障排查相关的知识,希望对你有一定的参考价值。

作者|苏亚 张明

编辑|Vicky


导读:

本文将向大家介绍清华NetMan实验室和阿里巴巴公司的最新AIOps合作成果:CoFlux。故障排查是AIOps的一个重要工作,也是困扰运维人员多年的难题。CoFlux是通过自动挖掘KPI之间的异常波动关联关系来帮助运维人员进行故障排查,具体的,波动关联关系结果可以在以下三个方面帮助进行故障排查:报警压缩、推荐TOPN的可能原因、构建异常波动传播链。该工作对应的论文《CoFlux: Robustly Correlating KPIs by Fluctuations for Service Troubleshooting》发表在IWQoS 2019。



清华阿里AIOps新作:KPI波动关联分析助力故障排查
背景
清华阿里AIOps新作:KPI波动关联分析助力故障排查

为了对互联网公司的各项服务进行管理,运维人员通常会监控收集成千上万的关键性能指标KPI(Key Performance Indicator),这些KPI(例如服务请求数量、服务请求成功率等)的形式多为时间序列。

在实际的运维管理工作中,由于各种原因(例如网络中断、恶意攻击等),公司的服务中断不可避免。当服务发生故障时,与故障原因相关的许多KPI数据也会出现异常的波动,而且这些波动也会传递到其他有业务关联或者模块调用关系的KPI,形成报警风暴。报警风暴产生的报警邮件和短信会使得运维人员很头大,因为其中的大量报警都是冗余的,只有少数的报警需要运维人员去关注和解决。此外,发生异常波动的KPI交织在一起,也使得故障排查工作费时费力非常困难。如果可以自动挖掘KPI之间的异常波动关系,就可以帮助运维人员进行更加高效智能地进行故障排查。


清华阿里AIOps新作:KPI波动关联分析助力故障排查
问题描述
清华阿里AIOps新作:KPI波动关联分析助力故障排查

清华阿里AIOps新作:KPI波动关联分析助力故障排查

图1 时间序列,预测序列,波动特征序列

       对于一个时间序列S = [s1, s2 ,…, sm]siKPI S在时刻i的数据,mKPI的长度。对于单一KPI,在数据采集和预处理时要求相邻时刻数据间的时间间隔相同。对于两个KPI,如果时间间隔不同,可以取两个KPI时间间隔的最小公倍数作为公共的时间间隔。KPI S的预测序列P = [p1, p2, …, pm]pisi的预测值。因此,一个KPI的预测误差序列F = [f1, f2, …, fm]fi =  sipi。对于一个KPI,正常的部分是比较准确容易的被预测出来,但是异常波动部分通常都是由一些不可预见的突发因素导致的,很难被预测。因此,预测误差可以很好的用来表示KPI的波动特征,CoFlux使用KPI的预测误差序列来表示该KPI的波动特征。图1 展示了一个时间序列,预测序列,波动特征序列的实例。此外,用于得到预测序列的预测模型以及对应的参数即为特征检测器。

清华阿里AIOps新作:KPI波动关联分析助力故障排查

图2 (左)6个KPI,(右)KPI对应的波动特征曲线

       CoFlux的目的是挖掘两个KPI之间的波动关联关系,这种波动关联关系可以帮助进行故障排查。具体的,这种关系包括三个具体问题:1. 两个KPI的波动是否相关?如果相关,2. 波动的先后顺序如何(同时发生或者某根曲线的波动先发生)?3. 波动的方向是否一致(波动方向一致或者相反)?

      利用原始的KPI曲线来判断波动关联关系比较困难,我们可以借助KPI的波动特征曲线。如果两个KPI的波动特征曲线相关(即波动同时发生或者发生时有一定的相位差),那么原始的两个KPI的波动相关。图2展示了6KPI及其对应的波动特征曲线。从图2中可以看出,K1K2K3波动相关,但是与K4波动无关;K1的波动先于K2K3发生,且波动方向相反;K2K3的波动同时发生,且波动方向相同。


清华阿里AIOps新作:KPI波动关联分析助力故障排查
挑战
清华阿里AIOps新作:KPI波动关联分析助力故障排查

      分析判断KPI的波动关联关系,主要有以下三个挑战:

      1. KPI曲线数据众多且曲线特征各异(例如不同的周期性、平稳性、趋势等),因此,没有通用的方法可以对所有的KPI进行波动特征提取。

      2. 基于异常检测结果的波动关联关系分析不合适。基于异常检测的方式需要挑选合适的异常检测算法并进行异常的定义(异常的阈值等),并且二分类的异常结果也比波动特征的信息量要少很多。

      3. 波动关联关系复杂。正如在问题描述中所说,两个KPI间的波动可能有不同的先后顺序以及波动方向,这给判断波动关联关系时带来了更大的挑战。


清华阿里AIOps新作:KPI波动关联分析助力故障排查
方法
清华阿里AIOps新作:KPI波动关联分析助力故障排查

清华阿里AIOps新作:KPI波动关联分析助力故障排查

图3 CoFlux方法架构图

       CoFlux的输入是两根KPI曲线,输出结果是波动关联关系:两个KPI是否波动相关,如果相关,同时输出波动的先后顺序和波动的方向。算法整体分为两个大的部分:特征工程和相关性测量。

       特征工程的目的是为KPI找到合适的特征检测器,由于不同KPI有不同的特征,单一的特征检测器无法适用于所有的KPI。因此,我们基于两个直观假设:如果可以提供足够多的特征检测算法,那么,1.对于任何一个KPI,总有一个算法可以为该KPI提取到合适的波动特征。2.如果两个KPI波动相关,至少有来自两个KPI的波动特征也相关。相关性测量的目的是根据特征工程得到波动特征计算得到相关性结果。接下来,我们具体介绍特征工程和相关性测量。

第一步,特征工程。特征工程主要包括两个步骤,特征提取、特征放大。

特征提取:如表1,特征提取主要包含了我们预选取的预测模型及参数,总计一共有86个检测器,因此对于一个KPI,我们可以得到86个波动特征。

表1 CoFlux中的预测模型和检测器

清华阿里AIOps新作:KPI波动关联分析助力故障排查

       特征放大:一个KPI大部分时间范围内都是正常的,没有很大波动,只有随机的噪声。只有当服务受到影响时,才会产生波动。因此,波动的数量是远远小于正常数据的。为了削弱噪声的影响,我们采用改进版的激励函数:一个KPI的波动程度越大,波动特征也就会被放大的越大,这样就使得我们的波动特征更具区别度,对最后的相关性判断也更有帮助。

清华阿里AIOps新作:KPI波动关联分析助力故障排查

       第二步,相关性判断。对两个KPI的波动特征进行相关性判断时,需要考虑到KPI波动的轻微形变以及相位差。因此,我们挑选Cross-Correlation来测量两个波动特征的相关性结果。

清华阿里AIOps新作:KPI波动关联分析助力故障排查


清华阿里AIOps新作:KPI波动关联分析助力故障排查
实验
清华阿里AIOps新作:KPI波动关联分析助力故障排查

       实验部分包括了两个数据集:数据集1:波动相关的两个KPI的原始曲线数据特征不同;数据集2:波动相关的两个KPI的原始数据曲线特征相似。由于没有专门的处理波动关联分析的算法,我们选取了已有的五种关联分析工作以及变种(一共有7种方法)作为对比算法,表2展示了CoFlux方法和对比算法在两个数据集上的结果。结果表明CoFlux在两个数据集上都比其他的算法效果要更好,且在三个问题上的F1-score分别大于0.84,0.92,和0.95。

表2 CoFlux和对比方法在两个数据集的结果

清华阿里AIOps新作:KPI波动关联分析助力故障排查

接下来介绍CoFlux在故障排查工作中的应用实例。

报警压缩:对于大量的KPI,我们首先利用CoFlux计算所有KPI的两两之间的波动相关程度,然后使用K-means进行聚类(K可以使用轮廓系数方法选择)。每一类内的KPI可以当成一个报警簇,在报警的时候当成一个整体进行报警。图4展示了CoFlux利用24根KPI的波动相关结果聚成3类报警簇的实例。

清华阿里AIOps新作:KPI波动关联分析助力故障排查

图4 报警压缩实例热度图表示

推荐TOPN的可能原因:如图5,对于任一KPI X,我们可以通过CoFlux找到该KPI的TOPN相关的KPI曲线。在进行故障排查时,运维人员可以优先检查这TOPN的曲线来对KPI X进行快速异常分析。

清华阿里AIOps新作:KPI波动关联分析助力故障排查图5 推荐TOPN的可能原因实例

       构建异常波动传播链:我们可以利用KPI之间的波动传播关系来构建异常波动传播链,这个异常波动传播链可以反映不同KPI之间的波动是如何关联在一起的。图6 展示了CoFlux在数据库服务上自动构建波动传播链的实例,相比较人工的方式,CoFlux在不需要专家领域知识的情况下可以自动准确的构建异常波动传播链。

清华阿里AIOps新作:KPI波动关联分析助力故障排查

图6 (左)人工构建的异常波动传播链;(右)根据CoFlux自动构建的异常波动传播链


清华阿里AIOps新作:KPI波动关联分析助力故障排查
结论

利用KPI的波动特征进行关联分析对于故障排查是非常有用的,本文是服务运维管理领域第一篇定义研究这种波动关联分析的工作。未来的工作计划是采用深度学习的方法更加准确的提取KPI的波动特征。更多细节可以点击“阅读原文”进行阅读。


智能运维前沿

介绍世界范围内智能运维的前沿进展

推动智能运维算法在实践中落地和普世化

长按二维码,关注我们



以上是关于清华阿里AIOps新作:KPI波动关联分析助力故障排查的主要内容,如果未能解决你的问题,请参考以下文章

清华AIOps新作:蒙特卡洛树搜索定位多维指标异常

北邮AIOps新作:连续区间多类型KPI异常检测

清华百度AIOps新作:强化学习降低TCP时延

微软亚研院的AIOps底层算法: KPI快速聚类

清华AIOps算法:KPI聚类

如何在实际场景中使用异常检测?阿里云Prometheus智能检测算子来了