上节介绍了减少报警的方式,但是现实中的报警是不可避免的。在发生报警以后,如何快速定位具体问题就成为关键的环节。那如何通过模型去定位问题呢?
通过统计分析,我们线上发生最多的是这六大类的报警,这些报警分别是:
在发生报警后,运维人员需要登陆到机器或者监控系统去看出现问题的时间段内是哪些监控项或者进程出现问题。这样繁重且具有很强规则性的场景特别适合模型去搞定。本节将介绍一种模型,能够帮助运维人员缩小报警排查范围,快速定位到问题。
该项目中要分析两个维度数据:
那如何在事件发生后,找到跟它相关的指标呢?实现的方法如下:
1)针对每个事件,使用在2014年SIGKDD会议上发表的论文《Correlating Events with Time Series for Incident Diagnosis》中提到的方法,看哪些指标跟这个事件发生有关系。这样的做目的是对指标进行初筛,达到降维的目的。
2)针对第一步选出来的指标,求出这些指标的信息增益比,选择前k个(我们取得值是5)特征作为最后的影响指标;
3)最后使用xgboost对影响指标进行分类,验证效果。
下图是我们对这六大类报警的分析结果,取报警事件最相关的Top5指标,取得比较好的准确率:
比如下一次发生“host.alive”报警,就有很大概率是 'cpu.idle' 、 'net.if.total.bits.sum' 、 'mem.memused.percent' 、 'mem.swapused.percent' 和 'ss.closed' 导致的,这样就能够减少排查问题的时间。