前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >要保证指标类告警的质量,准确有效的指标异常检测算法必不可少

要保证指标类告警的质量,准确有效的指标异常检测算法必不可少

原创
作者头像
嘉为蓝鲸
发布2022-03-28 16:48:17
7680
发布2022-03-28 16:48:17
举报
文章被收录于专栏:嘉为蓝鲸的专栏

IT运维领域要保障服务正常运行,通常第一步是将运维的对象监控起来,这其中主要就是对运维对象的指标进行实时监控:通过设定的(算法)规则对指标进行实时检测,当某个指标值不符合设定的规则时,则判定为异常,然后发送相应的告警到告警平台。

告警平台收到告警后,会分配给对应的运维人员进行处理,运维人员根据告警信息来排查问题所在,最终定位故障的根本原因,并对故障进行修复。

从这个流程可以看出,整个过程是以告警为中心,所以告警的质量至关重要。那么,如何保证指标类告警的质量呢,这就需要使用准确有效的(算法)规则来对指标进行异常检测了。

01. 指标异常检测常面临的问题

  1. 规模庞大

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

2. 指标类型多样化

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

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

02. 什么是单指标异常检测?

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

  • 时间序列:是一组按照时间发生先后顺序进行排列的数据点序列。时间序列的时间间隔为此时序数据的频率。
  • 异常:在时间序列中,异常是指在一个或多个信号的模式发生意料之外的变化。

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

▲ 图片来源谷歌,如有侵权请联系删除
▲ 图片来源谷歌,如有侵权请联系删除

03. 如何实现单指标异常检测

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

  1. 指标分类

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

▲ 图片来源谷歌,如有侵权请联系删除
▲ 图片来源谷歌,如有侵权请联系删除

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

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. 对应检测模型构建

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

下图列出了将指标数据进行曲线分类后,适用算法的情况(不考虑有监督算法)。

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

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

更多关于如何搭建监控平台体系请戳:搭建统一监控平台毫无思路?产品大神手把手带你梳理!

▲ 嘉为蓝鲸监控中心展示
▲ 嘉为蓝鲸监控中心展示

发现故障是告警质量的决定性环节,指标异常检测作为运维故障发现-分析-处理流程的开始阶段,它的一分准确可以避免后续的十分、一百分的劳动。

▲ 实践流程图
▲ 实践流程图

好的指标异常检测方法一方面能够使得告警质量大大提升,另一方面能够减少运维人员对阈值设定的繁琐工作量,对于整体的运维质量起着至关重要的作用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01. 指标异常检测常面临的问题
  • 02. 什么是单指标异常检测?
  • 03. 如何实现单指标异常检测
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档