基于正负关联规则的告警根因计算方法

2022-03-16 10:31
科技创新与应用 2022年5期
关键词:项集置信度日志

王 锐

(中国移动通信集团广东有限公司,广东 广州 510623)

大型IT 系统中会出现大量的故障状况或异常。如果网络中产生一个故障,则在网管监控系统中可能出现多个告警事件,进而导致数以万计的告警产生。例如网络中某一路由器出现了故障,网管监控系统中不但出现该路由器的告警,而且所有与该路由器相连的设备均会产生告警[1]。因此,减少无效告警并对收集到的告警进行根因分析[2]是非常重要的。

现有根因分析的基本思路:通过人工检索相关错误日志和告警数据,从中定位实际产生的问题以及引发告警的真正原因。当需要检索的告警和日志数据达到一定量级时,就会出现效率问题。本文基于正负关联规则和设备拓扑关系,提出了一种大型IT 系统中的告警根因计算方法。

1 告警的根因分析与关联规则

1.1 根本原因与根因分析

根本原因(root cause)是指影响IT 系统正常工作并触发告警的最开始或基础性原因。

识别根本原因是外延推理常见的问题。外延推理是从结果推论原因的过程(如告警)[3]。主要是通过建立“原因→结果”的传播模型,然后通过科学的关联分析,逐步找到问题的根本原因,而不是仅仅关注问题的表征。

1.2 告警根因的关联规则

关联规则的原理:使用频率最高的数据挖掘经常用于发现不同种类、不同项目之间的联系[4],即从数据集中识别出频繁出现的属性值集(频繁项集)[5],然后再利用这些频繁项集描述关联关系规则的过程。

1.2.1 关联规则相关原理

关联规则的经典算法为Apriori 算法[6-8],该算法基本分2 步:

(1)挖掘频繁项集,根据最小支持度阈值(min_sup)找出数据集中所有的频繁项集,直到再没有满足min_ sup 条件的项集为止。

(2)基于频繁项集生成关联规则,对于对任意事务集X,Y,若count 为事务的支持数,则事务X 的支持度:

若X 为频繁集,Y⊂X,Y≠Ø,且sup(X)/sup(Y)≥min_conf(最小置信度),则关联规则X=>(X-Y)成立。

若关联规则X=>Y 成立,则其置信度conf(X=>Y)由式(2)可以求得:

若同时满足sup(X=>Y)≥min_sup 和conf(X=>Y)≥min_sup,则为强关联规则,反之为弱关联规则,需要设置最小支持度阈值和最小置信度阈值才能得到符合的关联规则。

1.2.2 正负关联规则的相关原理

经典的Apriori 算法因其高度依赖候选项集产生频繁项集理论,大多数关联规则通过支持度-置信度框架得出[9],即最小支持度会过滤掉样本出现次数不多的规则,但是该规则不适应现有IT 系统的故障关联分析当中。

IT 系统整体情况是趋于稳定的,出现严重的异常故障事件是较少的样例,所以相关关联分析的样本数据会比较少,可能会被传统的算法忽略。为了弥补单一最小支持度不足的情况,本方法将采用正负关联规则进行频繁项的挖掘。相关原理:假设频繁项集已经求出并且已经保存在集合Collection 中,挖掘正负关联规则的框架如下:

2 告警的正负关联规则根因分析

在上一章节中讨论了根因分析以及关联规则的相关原理。本章将基于正负关联规则数据挖掘进行IT 系统的告警根因分析,提出了一种告警根因事务数据库的清洗生成方法,以及相对应的告警根因判断方法。

2.1 告警系统的设计

步骤1:对基于IT 系统相关的拓扑有向关联关系、错误日志、告警进行采集和标准化处理,标准化处理包含:统一数据字段、时间格式和节点唯一标识。

步骤2:对清洗后的错误日志、告警进行聚类处理,将错误日志和告警归纳为能够涵盖关键信息内容的泛化模板。

步骤3:统计各个拓扑节点上聚类后的错误日志、告警的总频次K,在同一个时间窗口切片中,取拓扑有向关联关系的且有向路径深度不超过N 的各节点之间的错误日志、告警的频次J,根据每个节点到根节点的有向路径深度得到动态加权系数ω,考虑时间窗口内出现的频次J、总频次K、加权系数ω,得到错误日志和告警之间的事务数据库D。

步骤4:相关度因子corr 表示项集之间的正关联和负关联,当corr>1 时,挖掘项集之间的正关联规则A⇒B,当corr<1 时,挖掘项集之间的负关联规则A⇒¬B,当corr=1时,不进行规则挖掘,并根据最小支持度和最小置信度的区间阈值进行相关度计算,判断规则是否保留。

步骤5:根据步骤4 的正负关联规则计算结果,如果存在有效的负关联规则A⇒¬B,则在对应的正关联规则中剔除掉正规则A⇒¬B,将剔除后的正规则集合作为最终告警根因输出。告警根因分析流程图,如图1 所示。

图1 告警根因分析流程图

2.2 日志告警之间的拓扑关系

在计算聚类后的错误日志、告警的事件标记为I 项集,则每一个事件In项发生的总频次为Kn,在拓扑有向关联关系的节点中,如果按时间窗口进行切片,得到每个节点时间窗口内聚类后的错误日志、告警的事件In项在时间窗口内每个节点发生的频次Jn。

以根节点开始,在路径节点集合[r1,r2,r3,...,rn]当中,计算从根节点开始发生的报警事件In 项发生的事务数|Dn|为|Dn|=Jn/Kn*ω。

按照路径上的节点集合依次计算,可得到一个ID 为n 的事务Tn={I1,I2,...,In}发生的事务数{|D1|,|D2|,...,|Dn|},遍历集合O上所有的路径,可得到事务集合T={T1,T2,…,Tn},最终得到事务数据库D。

2.3 日志告警的关联度计算

相关度因子corr 表示项集之间的正关联和负关联,当corr>1 时,挖掘项集之间的正关联规则A⇒B,当corr<1 时,挖掘项集之间的负关联规则A⇒¬B,当corr=1时,不进行规则挖掘,并根据最小支持度和最小置信度的区间阈值进行相关度计算和判断规则是否保留。

根据原理,在负关联规则当中有以下公式:

所以只需进行一次正关联规则挖掘,即可推导得到负关联规则的结果:支持度supp(A⇒¬B)、置信度conf(A⇒¬B),减少重复计算负关联规则的结果。

3 实验结果与分析

为测试算法的运行结果,在操作系统为CentOS 7 的虚拟机上进行相关实验,告警数据来自某网管日志系统。使用Python 对告警数据进行告警关联规则的挖掘,将原始告警数据录入到数据库中。

通过对错误日志数据进行聚类操作,获取了日志数据的模板日志,以及相关的发生频数,结果见表1。

表1 日志聚类结果

在获取了相关的模板数据后,通过相关算法的训练得到获取IP 之间的拓扑关系。故障告警的相关性分析只针对已经经过底层过滤的有效告警数据,即告警数据库经过过滤后的有效告警数据和系统告警处理期间所产生的中间结果。上一步中,数据已滤掉了重复告警、普通告警等无用的告警数据。告警正负关联分析将告警数据与拓扑关系相匹配,用于判断在相关拓扑关系下的告警数据是否存在关联,见表2。

表2 日志IP 所属的拓扑关系

分析结果得出,在相关拓扑规则下的部分告警数据存在有关联规则,部分结果如下所示:

{Started Session <*> of user <*> <*>}→{(root)CMD <*>}(conf:0.953,group:1)

{sd <*> <*> <*> CDB:<*>} →{(root)CMD <*>}(conf:0.932,group:2)

{Started Session <*> of user }→{(root)CMD <*>}(conf:0.891,group:1)

从结果可以看出,在群组1 中,存在两组有关联规则的告警,其中Started Session 与root CMD 告警之间存在着较高的关联规则,通过其告警对应的主机进行查看,可以发现Started Session 告警的产生,导致root CMD 的告警发生。该关联规则改进算法提高告警处理效率。

4 结束语

根因分析是IT 系统故障管理的重要手段,其作用在于消除冗余告警,将多个告警合并成一条具有更多信息量的告警,从而找到故障根源,快速定位和消除故障。本文研究的告警根因计算方法是基于正负关联规则挖掘,挖掘告警中IT 系统之间的拓扑关系,利用这些拓扑关系与关联规则进行告警分析,能较好地适应IT 系统架构的动态变化,为运维人员提供更高效、更便捷的根因分析。

猜你喜欢
项集置信度日志
一种基于定位置信度预测的二阶段目标检测方法
硼铝复合材料硼含量置信度临界安全分析研究
一名老党员的工作日志
扶贫日志
系统可靠性评估与更新方法
基于矩阵相乘的Apriori改进算法
雅皮的心情日志
不确定数据的约束频繁闭项集挖掘算法
正负关联规则两级置信度阈值设置方法
游学日志