暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

微软 AIOps:关联告警事件和时间序列的故障诊断方法

AISeer 2021-09-23
989

论文标题 | Correlating Events with Time Series for Incident Diagnosis

论文来源 | KDD 2014

论文链接 | https://dl.acm.org/doi/10.1145/2623330.2623374

源码链接 | 未公布

TL;DR

目前生产环境中的监控数据主要包括两种类型:指标的时间序列数据 (time series),例如 CPU 利用率指标,和事件序列数据 (events),例如 out of memory 时间,论文中提出一种事件和时间序列关联分析的方法来提升故障诊断的效率。主要考虑了事件序列与时间序列间三个方面的问题:事件和时间序列 ① 是否存在关联关系 ② 时间先后顺序 ③ 单调性影响。论文实验部分在仿真数据集和真实数据集中验证了算法的有效性。

Problem Statement

下图展示了事件与时间序列的关系,例如 CPU 密集型的程序会导致 CPU 使用率上升,但是磁盘密集型的程序将对 CPU 使用率没有什么影响,因此 CPU 密集型事件与 CPU 使用率上升事件间存在关联但是磁盘密集型的程序与 CPU 使用率上升没有关联。当故障发生时,考虑这种事件与时间序列的关联有助于提高故障诊断的效率。

故障诊断时需要考虑事件与时间序列间三个方面的问题:

  • 「是否存在依赖关系」:首先需要根据统计关系方法判断事件与时间序列间是否存在关系,虽然不能代表因果关系但是可以两者是关联的。
  • 「依赖关系的时间顺序」:判断事件和时间序列发生的顺序,例如事件 先发生,时间序列 也随之改变,那么可以说明事件 导致时间序列 波动,或者反之序列 波动导致了事件 。这样可以确认因果方向。
  • 「依赖的单调性影响」:通过判断时间序列上升或者降低导致了事件的发生。

给定事件序列或时间类型 ,对应的时间戳表示 表示发生事件的数量;时间序列 ,其中 表示数据点数量,时间序列的时间戳表示为 ,时间戳存在关系 表示采样时间间隔。

如上图所示,如果事件 与时间序列 间存在联系那么必然发生事件 发生后时间序列 会随之改变。

假设 表示事件 发生后长度为 的子序列, 表示发生前的子序列。如果事件 与时间序列 无关,那么子序列集合  或者 将不会与 中随机采样长度为 序列 统计概率分布相同,如果概率分布相同那么事件 存在关联。因此,论文中将关联分析问题转为多变量的二样本假设检验问题。

Algorithm/Model

论文中主要基于最近邻的方法来分析三个方面的关联关系。

最近邻方法

为例,给定样本 ,样本合集

定义 表示集合 的最近邻样本;

定义两个子集合 并且 指示函数的值为

基于最近邻的假设检验量化形式如下

足够大时, 符合高斯分布,其中

高斯分布的假设检验如下,

: ;

判断关联存在及其时序

根据最近邻的假设检验方法,如果 是统计独立的,那么 ,如果 是统计独立的,那么

判断单调性影响

主要是判断事件 导致序列上升还是下降: 或者 。论文中使用 检验进行判断, 间的 分数计算公式如下

其中 分别表示序列均值, 表示标准差。由于 表示 中事件数量,因此上式可以简化为

如果 那么表示负影响,如果那么表示正影响

整体的算法流程如下图所示:

Experiments

论文中采用的数据集如下所示

实验参数参考论文,实验效果如下:

考虑了计算最近邻时的时间序列相似度指标,整体而言 DTW 效果较好。

Thoughts

  • 本想根据时间序列关联分析来解决告警聚合的问题,但是这篇文章是考虑事件对应的时间序列影响,虽然不能解决遇到的问题但是思路仍然值得借鉴。

  • 对应到实际环境中,例如产生一个故障或者事件必然会影响多个时序指标,但是此时不同指标的形态不一样直接计算序列相似性可能不准确,可以简单处理下得到差值序列再计算相似度,如果序列相似然后聚合成一个告警好像就行了......🤔




dreamhomes


博客:dreamhomes.top

隐形字

公众号:DreamHub


长按识别二维码关注





👇🏻 点击「阅读原文」,排版效果更好哦 ↙️

文章转载自AISeer,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论