智能运维之道:基于AI技术的应用实践
上QQ阅读APP看书,第一时间看更新

1.3.1 异常检测

异常检测又称异常发现、异常诊断等,主要指找出设备、系统、网络环境等关键性能指标(Key Performance Indicator, KPI)的历史数据什么时候发生了异常,这类异常既可能是故障也可能不是。在数据分析中,异常是一个相对概念,是相对正常而言的。正常是指大多数表现出的特征。例如,企业100名员工中,99人的年龄在20~40岁之间,只有1个人年龄在50岁以上,这个人在年龄上则属于异常;反之,该企业被某大型企业收购合并后,90%员工年龄变成在30~50岁之间,20~30岁的员工则属于年龄异常。

运维上的异常,既有上述所说的“相对异常”,也有专家定义的“绝对异常”。主要是通过KPI指标数据的时序变化,找出那些不符合规律的数据。传统运维是专家根据单个指标的数值分布或多个指标的组合分布确定一个阈值,不在阈值范围内的则被认为是异常。这种策略对于稳定的、规律的运行环境非常有效,稍微复杂多变的场景则会失灵。这时就需要机器学习算法学习更长历史时间的数据规律,进行判断和预测。

单指标的异常从类型上可以分3类:异常孤立点、异常周期、异常集合。不同异常的示意图如图1-11所示,如果单个数据点相对于其他数据可以被认为是异常的,则该数据被称作异常的孤立点;如果数据在特定的周期性序列中是异常的,但在其他非周期序列中不是异常,则该数据被称作异常周期数据;如果数据所在的集合和该集合同处于一个数据集的其他兄弟集合不一致,则该集合为异常集合,如同一套系统在10个地区部署,9个地区呈现出白天访问量高晚上低的特点,1个地区没有表现出明显高低特点,则该地区为异常集合。

对单指标的异常较容易理解,多指标异常相对复杂。这方面需要通过机器学习算法来挖掘多维数据背后的信息,又增加了算法的难度,更加难以解释了。在第3章和第7章会对解释性较弱和较强的算法和案例进行介绍。

图1-11 不同异常的示意图

从复杂程度上来看,企业通常先做单指标的异常诊断、异常波动(指标漂移),再做多指标的异常诊断。多指标异常诊断往往是针对某一事物的异常诊断,该事物由多个KPI指标组成,比如电信运营商的网元、磁盘、网络等,又被称为网元异常诊断、磁盘异常诊断、网络异常诊断等。又因指标数据多是随时间而变化的时序类数据,因此,在实际工作中,这类异常诊断,被描述成对N个事物、M维指标、T时刻的数据进行异常诊断,需要同时对比不同事物之间的差异、不同指标之间的关联性、不同时刻数据的周期性3个角度来判断每个事物是否存在异常。

目前在单指标异常诊断上的算法较为成熟,而在多指标异常诊断上的算法由于场景和数据较为复杂,暂没有很好的算法模型,在本书第6章将介绍已有相关算法的研究和成效。