论文精读:Root Cause Analysis in Microservice Using Neural Granger Causal Discovery
Root Cause Analysis in Microservice Using Neural Granger Causal Discovery
摘要
- 微服务架构因其可扩展性、维护性和灵活性在IT运营中得到广泛应用,但系统故障时SREs难以确定根本原因。
- 以往研究使用结构化学习方法建立因果关系图,但忽略了时间序列数据的时间顺序,无法利用时间关系中的丰富信息。
- 提出了一种名为RUN的新方法,通过结合时间序列的上下文信息和时间序列预测模型来执行神经Granger因果发现,并使用带个性化向量的PageRank推荐前k个根本原因。
主要贡献
-
提出了一种名为RUN的自监督神经Granger因果发现框架,用于捕捉时间序列数据中的上下文信息,并构建多变量时间序列之间的因果图。
-
RUN框架利用PageRank算法在导出的因果图上识别触发点的根源。
-
引入了一种创新的自监督学习方法,专门将具有不同上下文信息的相同时间戳视为正例对,以解决将具有相似周期性的数据点错误识别为负例对的问题。
问题描述
监控系统将通过关键绩效指标(KPIs)监控微服务系统的运行状态,在典型场景中,当异常的KPI触发异常检测系统时,我们定位根本原因。我们将异常的KPI称为触发点,并随后识别触发点背后的潜在根本原因。这些KPI属于多变量时间序列数据。在微服务架构中,识别异常的根本原因可以形式化如下。 多元时间序列 X \mathbf{X} X 由 N N N 个特征组成, X = [ X 1 , X 2 , … , X N ] \mathbf{X}=\left[X_1, X_2, \ldots, X_N\right] X=[X1,X2,…,XN]. 我们收集了指定时间周期 T T T内的相应时间序列,每个时间序列可以表示为 X i = [ x i 1 , x i 2 , … , x i T ] X_i=\left[x_i^1, x_i^2, \ldots, x_i^T\right] Xi=[xi1,xi2,…,xiT], X ∈ R N × T \mathbf{X} \in \mathbb{R}^{N \times T} X∈RN×T. 我们利用神经Granger因果发现方法来推导出因果图 G ^ = { V , E } \hat{\mathbf{G}}=\{V, E\} G^={ V,E}, 其中节点 V V V 表示每个特征 X i X_i Xi 边 E E E 表示特征 X i X_i Xi Granger 导致特征 X j X_j Xj. 我们的目标是识别出导致因果图 G ^ \hat{\mathbf{G}} G^ 触发点的根源特征 X culprit X_{\text {culprit }} Xculprit 。
方法
提出的框架如图4所示,它由三个阶段组成:预训练阶段、神经Granger因果发现阶段和诊断阶段。
在预训练阶段,我们增强基础编码器以生成包含上下文信息的有信息量的时间序列表示。这种增强是通过最大化具有相同时间戳但上下文不同的实例之间的一致性来实现的。在神经Granger因果发现阶段,我们利用时间序列预测模型来挖掘因果图,并剪除虚假的边以获得最终的有向无环图(DAGs)。在诊断阶段,我们应用一种名为Pagerank的随机游走算法,结合个性化向量,根据因果图推荐最可能的根源原因。
图4:我们提出的RUN框架概述,包括三个阶段:1)最大化正对以捕获上下文信息;2)神经Granger因果发现,从多变量时间序列中推导出因果图;3)诊断阶段从获得的因果图中推断出根本原因。
预训练阶段
我们使用DLinear(Zeng等人,2023年)作为我们的时间序列预测的基础编码器。为了增强我们的基础编码器,我们设计了一种不依赖于负样本对的对比学习。我们认为负样本对不适合时间序列,因为它们表现出周期性模式,如图3所示。当选择不同的时间戳作为负样本对时,它们可能属于同一周期性。如果我们选择了错误的负样本对,可能会导致将本应相似的嵌入分开。因此,我们通过考虑具有相同时间戳但上下文不同的实例作为正样本对来学习上下文信息。
首先,我们按照(Yue等人,2022年)使用随机裁剪,随机采样两个重叠的时间段 y 1 y_1 y1和 y 2 y_2