论文标题 | An Influence-based Approach for Root Cause Alarm Discovery in Telecom Networks
论文来源 | ICSOC(B) 2020
论文链接 | https://arxiv.org/abs/2105.03092
源码链接 | https://github.com/shaido987/alarm-rca

TL;DR

论文中提出了一种数据驱动不需要专家知识的根因告警定位框架,其中结合了因果推理和网络表示学习方法。关于告警间因果图挖掘部分论文中设计了一种混合因果图学习方法 HPCI,主要思想是将霍克斯过程与 PC 算法相结合。此外,论文中还提出一种基于因果传播的表示学习算法 CPBE 来推理因果图中边的权重。在得到加权的因果图后使用了一种影响力最大化算法 IRIE 来定位图中的根因告警。实验部分在人工数据集和真实数据集中验证了论文提出的框架优于当前 baselines。

Preliminaries

在了解正文的方法前需要知道两种概念:霍克斯过程 (Hawkes process) 和 PC 算法,可以参考其它两篇文章。

Algorithm/Model

论文中提出的系统架构图如下所示

整体框架

主要包含三个模块:

  • 告警数据预处理:主要任务是有效告警过滤,根据网络拓扑聚合告警等。

  • 影响图构建:主要根据历史告警数据构造影响关系因果图,并且是周期性执行。因果图中节点是告警类型,边是推理出来的因果关系。这部分涉及了两种方法:

    • HPCI (Hawkes process and conditional independence):结合 Hawkes 过程和条件独立性测试构建因果图结构。
    • CPBE (Causal Propagation-Based Embedding):结合网络表示学习方法推理因果图中边的权重。
  • 告警排序:故障发生时根据构造的告警因果图进行告警排序,选择 top-K 进行推荐。

以下详细介绍每个模块中的方法细节。

告警预处理

输入数据:

  • Network Topology:网络设备间的架构拓扑。
  • Alarms:网络告警数据,(alarm_id, alarm_type, network_device, occurence_time)

告警预处理步骤如下:

  1. 由于一个故障会导致相连设备发生告警,因此将同一个连通子拓扑中的告警进行聚合。🧐 个人感觉可有可无,一般数据给定一个连通拓扑图。

  2. 同一故障相关的告警一般会在较短的时间窗口wiw_i 内发生,因此可以根据告警发生时间对告警进行分组。时间窗口wiw_i 的大小需要根据实际的网络特征来判断。

    分组后的告警定义为一个告警序列Si={(aij,tij)}j=1niS_{i}=\left\{\left(a_{i j}, t_{i j}\right)\right\}_{j=1}^{n_{i}}wiw_i 是时间窗口大小,aijAa_{ij}\in A 为告警类型。tijwit_{ij}\in w_i 是发生时间,nin_i 是告警数量。

  3. 每个告警序列需要转化为告警事务表示为Ti={(a,t,n)aAi}T_i=\{(a,t,n)|a\in A_i\},其中a,t,na, t, n 分别表示告警类型,最早发生时间和发生次数,AiA_i 表示时间窗口wiw_i 内的每个告警类型。

告警因果图构建

HPCI

多维 Hawkes 过程可以挖掘出告警指标间的某种因果影响关系,即影响矩阵AA 可以理解因果图的邻接矩阵。但是会有些冗余或者间接的边也会被推断出来,因为条件密度函数在实际数据中难以捕获事件直接的因果关系?因此,论文中提出了结合 Hawkes process 和 PC 的混合算法 HPCI 来挖掘告警类型间的因果结构。

主要过程如下:

  1. 利用未添加惩罚项的多维 Hawkes 过程挖掘告警类型间的影响强度。使用告警序列S={Si}\mathcal{S}=\{S_i\} 作为输入得到初始的加权图,边(u,v)(u,v) 的权重αuv>0\alpha_{uv}>0 表示在告警类型vv 发生后告警类型uu 才发生的时间期望。所有权重为正的边被保留。

    注:使用未添加惩罚项的 Hawkes process 是因为方法可解释性更好而且实验效果更好。

  2. 利用 CI 条件独立性测试消除冗余的边。使用告警事务T={Ti}\mathcal{T}=\{T_i\} 作为输入,对于每个告警aia_i 的发生数量序列为Ni={nTkT,(a,t,n)Tk,a=ai}N_{i}=\left\{n \mid T_{k} \in \mathcal{T},(a, t, n) \in T_{k}, a=a_{i}\right\},其中nn 为 0 如果事件类型在当前时间窗口wiw_i 没有发生。对于每一对告警类型(ai,aj)(a_i, a_j) 使用 CI 来判断条件独立性并删除边。

  3. 迭代执行步骤 2 删除αuv\alpha_{uv} 最小的边直至因果图为有向无环图 DAG 表示为GCG^C

通过这一步已经可以得到告警类型间的因果关系图和告警类型间的影响强度。某些情况下而言这种结果已经足够了,后续论文中还提出 CPBE 方法来推理优化边权重。

CPBE

上一步得到的因果图GCG^C 中的权重并不能反映全局拓扑间的因果影响,因此论文中提出了基于网络表示学习的权重推断方法 CPBE。

主要包含两步:

  • 对于图中的每个节点uu 通过网络表示学习到一个向量表示ZuRLZ_u\in \mathcal{R}^L
  • 使用向量相似度来计算节点间的边权重。

CPBE 整个过程如下图所示

CPBE 算法过程

以上算法过程包括一个传播图构造过程,此处说明下。

对于每个告警事务TiTT_i \in \mathcal{T},使用因果图GCG^C 来提取因果传播图GiPCG_i^{PC},其中只保留和TiT_i 告警类型相同的节点。然后通过 DFS 或者随机游走来生成序列来训练 skip-gram 模型生成节点表示。过程如下图所示

CPBE 步骤流程

最后得到的加权有向图表示为GIG^I

根因告警排序

对于每个告警事务TiTT_i\in \mathcal{T},基于相关节点vTiv\in T_i 和对应的边{(u,v,w)u,vTi}{\{(u, v,w)|u,v\in T_i\}} 创建告警传播子图GiPIG_i^{PI}。在每个子图中的告警单独进行排序。

论文将子图GiPIG_i^{PI} 根因告警定位问题转化为节点影响力最大化问题。因为实际场景中图GiPIG_i^{PI} 较小因此论文直接采用 IRIE(Influence Ranking Influence Estimation)来估计节点的影响力。

过程如下图所示

告警排序过程

Experiments

论文中使用的数据集包括人工生成数据和真实数据两种类型。

baselines 包括以下四种:

  • PC-GS: PC + G-square CI test.

  • PC-FZ: PC + Fisher-Z CI test.

  • PCTS: 改进的时间序列 PC 因果挖掘方法。

  • HPADM4: 多维 Hawkes process.

首先测试因果结构挖掘的准确性,在两种类型数据的结果如下所示:

实验结果

实验结果

根因定位准确率测试结果如下图所示,baseline 方法区别在于计算权重的方法不同。

实验结果

Thoughts

  • 整体思路完整,从因果图构建到根因定位过程。事件因果图构建过程在很多领域借鉴,之前了解的都是基于特征和 PC 算法构图。
  • 文中的超参数,例如事件窗口大小,难以优化,针对每个网络系统需要专家知识。

Contact