内容简介
AIOps领域关于指标、日志和trace数据的异常检测与定位的研究工作很多,这些工作中的异常更多是时序指标上的表现异常,与真实的故障相距甚远,真实的故障是极其稀疏的,与运维工作人员每天接受到的异常检测算法识别出来的告警量不在一个数量级。本文主要介绍一种实时故障预测的文章《Real-Time Incident Prediction for Online Service Systems》,使用告警数据来预测未来一段时间是否会发生真实故障。
eWarn:Incident Prediction
1 数据输入
如上图所示,模型目的:预测
窗口内是否存在故障
:观测窗口,使用
窗口内的观测告警数据来预测是否存在故障
:运维人员预防故障发生所需要的时间
:如果
窗口内有故障发生,那么标注为存在异常,否则标注为正常
:滑动窗口大小
:实例窗口,观测窗口
会分为更细粒度的实例窗口 文章的参数设置:
参数的选取会一定程度的影响模型效果,
与F1-score的关系图如下
2 模型结构
eWarn包含四个主要步骤:
1)通过特征工程从告警数据中提取有效且具有解释性的特征; 2)通过多实例学习(multi-instance learning)来区分有用告警和噪音告警; 3)基于特征工程提取出的特征,使用XGBoost进行异常识别; 4)将故障预测结果反馈给用户,并采用LIME(Local Interpretable Model-agnostic Explanations)解释模型的预测结果。
特征提取
文本特征:采用LDA(Latent Dirichlet Allocation)来提取文本特征; 统计特征:告警量【总告警量、不同严重程度的告警量、不同类型(应用、数据库、内存、中间件、网络、硬件等)的告警量】、窗口时间【hour of the day、工作日or周末、day of the week、是否business hour等等】、告警的平均间隔时间【窗口内的告警是否频繁】
多实例学习过滤噪音告警
eWarn从每个实例窗口中提取特征,再将观测窗口内的多实例窗口特征聚合成包,如果实例窗口内没有太多有用的告警,聚合过程中会给其分配更低的权重。 多实例学习假设负包只包含负实例,正包至少包含一个正实例。详细地讲,
是观测窗口的异常标签,
是实例窗口的异常标签。
关于实例窗口内特征的聚合,对于负包共享相同的权重,对于有异常成分的正包,给有异常的实例分配更大的权重,给包含无用告警的实例分配更低的权重,最终的特征为
。
XGBoost分类模型
采用SMOTE(Synthetic Minority Over-sampling TEchnique)平衡正负样本,再使用XGBoost进行训练
LIME模型可解释性
报告实例如下,第二部分的特征贡献是有LIME中的线性模型计算的权重,越重要的特征可能与预测事件的根本原因越相关。
3 实验结果
eWarn效果:
特征工程的重要性: