清华AIOps新作:蒙特卡洛树搜索定位多维指标异常
Posted 智能运维前沿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了清华AIOps新作:蒙特卡洛树搜索定位多维指标异常相关的知识,希望对你有一定的参考价值。
张明|孙永谦
编辑|Vicky
导读
在互联网运维中,有一类多维度KPI指标体系,其指标数目繁多、之间具有复杂的相互影响关系,通常只对KPI总量进行实时的异常检测算法,检测出异常后,再对体系查找定位导致该总量异常的细粒度指标集合。本篇文章介绍一种对这种多维度指标体系中准确、高效地进行异常定位的方法HotSpot,采用了蒙特卡洛树搜索(MCTS)方法。 该工作是清华大学NetMan实验室和百度公司IOP部门共同完成,文章《HotSpot: Anomaly Localization for Additive KPIs with Multi-Dimensional Attributes》于2018年3月发表在IEEE Access期刊上。
简介
对于网络运维中多数的关键性能指标(KPI,CPU利用率、某页面点击量等),对其应用实时的异常检测算法,即可快速发现异常状况、进而及时止损,然而,有一类可加和的多维度KPI体系(如网页访问量PV、收入指标、错误计数等),其指标元素数目繁多、之间具有复杂的相互影响关系。如图 1表示一个4维的PV指标体系(由一系列3维的结构来表示),维度是Province,ISP,DC和Channel(简记为P,I,D,C),其中每个cell表示一个最细粒度的指标元素对应的PV值,例如v(Beijing, ChinaNet, DC1,Channel1),相应的也有较粗粒度的元素,例如v(Beijing, ChinaNet, DC1,*)、v(Beijing, ChinaNet, *,*)、v(Beijing, *, DC1,*)、v(*, *, *,Channel1)、v(*,*,*,*),分别对应一排cell、一个平面的cell、一个立方体的cell、总PV。这种数据结构称为data cube,其中的子cube称为cuboid (用Bi表示),图 1 中的4维data cube,其中包含若干cuboid,结构可如图 2所示。
图 1 多维度指标体系示例
图 2 一个4维data cube中的cuboid结构(维度:P,I,D,C)
对这类多维度指标体系的运维,通常只对KPI总量应用实时的异常检测算法,检测出异常后,再对体系进行查找,定位出根因元素集合,这个查找、定位出根因集合的过程即为异常定位。需要说明的是,本文异常定位的集合,指的是在同一个cuboid中的若干元素组成的集合。
问题分析
本文问题需求是尽可能准确的找到根因集合,即使集合中的元素指标值比较小或者占比比较小,也不宜采用暴力剪枝的方法将这些元素剪枝掉(上一篇文章中的iDice算法就是这样做的,但其场景有所差异)。例如某一元素(*,location1,*,*)的PV值虽然很小(表示来自location1的访问量较少),对于我们的运维也是非常重要的,若它是根因的一部分,需要尽可能的找出它并尽快恢复。
此外,你可能会有疑问,为什么不对体系中的每一个指标做实时的异常检测呢?主要是因为元素间存在复杂的互相影响关系,常常是根因只有两三个元素,但会发现大量的指标都发生了较大的变化,例如表1中的简单案例中,(Beijing,*)是根因,但你会发现(Beijng,Mobile)、(Beijing,Unicom)、(*,Mobile)、(*,Unicom)的值都会发生变化。因此,我们认为,在这种可加和的多维度指标体系中,通过对每一个元素进行异常检测来判断根因的方法不合理。
表 1 简单二维指标体系案例(表格中的数字,前者为预测值,后者为真实值)
我们提出的思路为:多维度指标体系中的异常定位问题,实际上是寻找导致总量突变的根因元素集合。因此可以归结为一个搜索问题,即如果任意给定一个元素集合都可以判定其有多大可能是根因,则只需遍历搜索可能的集合并计算是根因的可能性,最后挑选出可能性最大集合即可。
挑战
基于以上思路,本文的主要挑战有以下两个方面,其中最主要是挑战二,搜索空间太大。
挑战一:准确衡量一个元素或集合是根因的可能性非常困难。不同元素的值是相互依赖和影响的,首先父元素和子元素间具有加和关系,此外如表 1 所示,元素间还有更为复杂的关系,这导致变化量、变化率等常用指标不足以准确描述元素或集合是根因的可能性,例如表 1 中,两个集合 S1={(Beijing,*)}、S2={(*,Mobile), (*,Unicom)}变化量都是18,都占总量的18%,无法区分谁的可能性更大。因此,需要提出更为本质的评价一个元素/集合是根因的可能性程度。
本文中定义了Potential Score (ps) 来解决这个问题。提前交代一下,ps不具可加和性,也就是如果S’={e1,e2},那么ps(S’)≠ps(e1)+ps(e2)。
挑战二:要遍历搜索所有可能的集合是不可能做到的。由于可加和的KPI拥有多维度的属性,随着维度的增加或粒度的细化,元素数目呈指数级爆炸式增长。更糟糕的是,我们想要搜索的不是单个元素(ps不具可加和性),而是元素集合,理论上一个cuboid中如果有n个元素,那么对应所有集合的数目是2 ̂ n-1(除去空集),也就是若n=100,则集合数目约是2 ̂ 100个,要遍历这个天文数字数目的集合,并分别求ps值,显然在有限时间内是不可能实现的。
为了克服这个困难,本文将采用两个策略:一是应用MCTS算法,对于每个cuboid中的元素进行遍历;二是采用分层剪枝的策略,逐层搜索、利用前一层的结果对该层先做剪枝。
HotSpot算法设计
如前所述,本文将多维度指标体系中的异常定位问题转化为搜索问题,其中主要挑战是搜索空间太大。而一些围棋程序,如AlphaGo,要解决的主要问题之一也是搜索空间太大,他们常用的是MCTS的方法。受此启发,本文也采用了MCTS搜索的方法。基本原理简述如下,围棋程序中需要决策下一步的落子位置,对于一个待测位置要判断其落子胜率,可以通过模拟尽可能多的结果来评估,最后选择一个胜率最大的位置落子;类似地,本文中需要决策根因集合中是否添加下一个元素,与胜率相对应,本文也提出了判断一个集合是根因可能性的分数Potential Score (也是对挑战一的解决方案)。
HotSpot概览见图 2,它将问题转化为在一个巨大空间的搜索问题后,应用 MCTS 作为基础搜索算法,并且提出了一个根因可能性评分指标,作为每个集合的度量和 MCTS 中的价值函数; 此外,HotSpot还采用分层剪枝的方法以进一步降低搜索复杂度(逐层搜索,利用前一层的结果对该层先做剪枝)。
图 3 HotSpot 概览
下面介绍其中HotSpot中的主要环节。
1.Ripple effect:
本文从实际案例中总结出一个元素之间互相影响的规则,Ripple effect。该规则旨在说明,任何一个元素值变化时,最细粒度层次中它的后代节点值将按照一定比例(通常是相同比例)进行变化;因体系的可加和性,有了最细粒度元素值,即可推导出其他所有元素值。例如 表 1中箭头所示,(Beijing,*)是根因,其最细粒度子节点 (Beijing,Mobile)和(Beijing,Unicom)会等比例降低(这里是理想情况,实际中存在噪声等影响),进而可推导出其他相关的值。
令x表示非最细粒度元素,x’i表示其最细粒度层 中x的后代元素。当x的值改变了h(x)时:
其中v和f分别代表真实值和预测值。
2.Potential score:
由Ripple effect知,任何一个元素值变化时最细粒度元素会等比例变化,而最细粒度变化元素又可将这些变化“传导给”其他所有元素。因此,可用最细粒度所有元素来表征任何一个元素或集合的变化。那么,最细粒度所有元素的真实值、预测值构成的向量分别记为v,f。。任给定一集合S,假设其为根因则可推导出其对应最细粒度元素值,对应的向量记为a,d(x,y)表示距离(本文采用欧氏距离),则Potential score如下:
3.MCTS算法:
MCTS解决一个Cuboid中的空间过大、搜索太慢的问题。它是一种启发式算法,理论上给的时间越长结果越准确,实际中常通过设定阈值(准确性阈值、时间阈值等)的方法,当找到满足阈值的结果即可停止搜索。其中一次迭代搜索过程包括以下四步:
4.分层剪枝:
随着cuboid中元素数目的增加,在相同时间内其准确性会下降。因此,为了进一步降低搜索的复杂度,本文在层间采用 分层剪枝 的策略。基本思想是,HotSpot逐层搜索cuboid,即从第1层到第L层;对于前一层中ps过小的元素,将其在本层中的子元素剪枝去掉。
实验验证
图 4 三种算法的F-score对比
本文对比了HotSpot和另外两种算法在本文场景下的结果,另外两种算法是Adtributor (NSDI 2014)和iDice (ICSE 2016,也是。图4展示了三种算法的F-score值,发现HotSpot在所有20类异常实例中都获得了更高的F-score值;随着根因集合中元素数量的增加,iDice的F-score急剧下降;而Adtributor只有在第一层的异常定位中达到了较好的准确性,其余层次中准确率降为0。相比之下,HotSpot在每种情况下的不同数量的元素和层次上都表现的相当好。此外,本实验在运行时间上,三个算法都在一分钟内,HotSpot略微落后另两种算法;不过,实际中HotSpot可以通过调节MCTS中的阈值来权衡准确性和运行效率。
总结
长按二维码
以上是关于清华AIOps新作:蒙特卡洛树搜索定位多维指标异常的主要内容,如果未能解决你的问题,请参考以下文章