AIOps探索:单指标异常检测

背景

IT运维领域要保障服务正常运行,通常第一步是将运维的对象监控起来,这其中主要就是对运维对象的指标进行实时监控:通过设定的(算法)规则对指标进行实时检测,当某个指标值不符合设定的规则时,则判定为异常,然后发送相应的告警到告警平台。在告警平台收到告警后,会分配给对应的运维人员进行处理,运维人员去根据告警信息来排查问题所在,最终定位故障的根本原因,并对故障进行修复。从这个流程可以看出,整个过程是以告警为中心,所以告警的质量是至关重要的。如何保证指标类告警的质量呢,这就需要使用准确有效的(算法)规则来对指标进行异常检测了。

日程表

描述已自动生成

指标异常检测面对的问题:

1.规模庞大:随业务发展的大规模系统和设备导致需要监控的指标呈指数型增加。

2.指标类型多样化:不同的系统和业务,其指标的形态千变万化,没有单一不变的方法可以覆盖所有的指标情况。

综上,要提高指标异常检测的效率和准确性,降低告警的误报率及漏报率,我们要从以上两个问题点出发去解决单指标异常检测的问题。

What

在探讨问题的解决方案之前,这里先给单指标异常检测的相关概念做一个陈述:

时间序列:是一组按照时间发生先后顺序进行排列的数据点序列。时间序列的时间间隔为此时序数据的频率。

异常:在时间序列中,异常是指在一个或多个信号的模式发生意料之外的变化

所以,单指标异常检测即对单个变量的时间序列数据进行异常发现的过程。在运维领域内,cpu、mem、disk等资源的使用量、网络流量等指标的异常检测都属于单指标异常检测。

图表

描述已自动生成

How

通过上面的内容,我们对单指标异常检测有了大致的了解,下面来讲述如何实现它。

一、指标分类

首先我们来解决上面提到的问题二——指标类型多样化的问题。时序数据的形态各异(如下图),如何通过一种有效的分类方式将时序数据分类呢?

图片包含 日程表

描述已自动生成

假设一条时间序列是由多种成分相加得来,那么它可以写为如下形式:

y(t)=S(t)+T(t)+R(t)

其中S(t)、T(t)、R(t)分别是周期成分(seasonal component)、趋势成分(trend-cycle component)、残差成分(remainder component)。如下图,将原始时序数据data通过STL分解为三种分量(trend、seasonal、remainder)之和。此外,时间序列也可以写成相乘的形式(对于乘性模型,可以取对数(当然是有意义的前提下),将其转化为加性模型):

y(t)=S(t)×T(t)×R(t)

图表

描述已自动生成

至此,我们的问题转变为:用什么方法判断曲线的类别(趋势型、季节型、波动型)。下面介绍常用的两种方式。

  • 皮尔逊相关系数(PCCs)判别法

通过时序数据的分解算法将原始数据分解为3个分量,而后分别计算三个分量与原始数据的皮尔逊相关系数,取系数最大的分量作为曲线的类别(如最大系数差别较小,可划分此曲线同属2个类别)。(分解法包括:经典分解法、X11分解法、SEATS分解法、STL分解法等)

  • 依据人工设定阈值的判别法
    • 是否是波动型

计算时序数据的标准差,并和设定好的阈值(人工经验)来进行比较得出

    • 是否是趋势型

EWMA平滑处理时序数据,而后通过一元线性回归拟合曲线,通过对y=kx+b的k值与设定好的阈值比较得出曲线是否是趋势型

    • 是否是季节性

对于非波动型数据不做季节性判断

对于波动型数据,获取当天、上一天、上周的同一天数据,归一化处理后分别计算当天与另外两天的MSE,取其中较小值与设定好的阈值进行比较得出曲线是否是季节型

二、对应检测模型构建

针对问题一——指标数据规模庞大的问题,这就使得无监督的算法相较于有监督算法、简单模型相较于复杂模型具有更大的优势:节省人力+普适性强+检测效率高

下图列出了将指标数据进行曲线分类后,适用算法的情况(不考虑有监督算法)。在实际使用过程中,一般会对每种类型的指标进行2种及以上的算法模型检测,并对结果进行投票决策,提高检测准确率。(注:考虑到延迟,同比环比算法都是相较于过去的某个时间范围而不是对应的时间点)

目前,嘉为蓝鲸监控平台已内置多种指标异常检测算法,告别静态阈值检测,有效提高异常检测质量,极大的降低了过去静态阈值方法造成的告警漏报、错报率,【插入监控平台文章如果有的话】

图形用户界面, 应用程序

描述已自动生成

实践流程图

图示

描述已自动生成

总结

发现故障是告警质量的决定性环节,指标异常检测作为运维故障发现-分析-处理流程的开始阶段,它的一分准确可以避免后续的十分、一百分的劳动。好的指标异常检测方法一方面能够使得告警质量大大提升,另一方面能够减少运维人员对阈值设定的繁琐,对于整体的运维质量有着至关重要的作用。

posted @ 2023-12-15 18:07  故君子慎为善  阅读(341)  评论(0)    收藏  举报