当前位置: 首页 > article >正文

论文精读:Root Cause Analysis in Microservice Using Neural Granger Causal Discovery

Root Cause Analysis in Microservice Using Neural Granger Causal Discovery

摘要

  1. 微服务架构因其可扩展性、维护性和灵活性在IT运营中得到广泛应用,但系统故障时SREs难以确定根本原因。
  2. 以往研究使用结构化学习方法建立因果关系图,但忽略了时间序列数据的时间顺序,无法利用时间关系中的丰富信息。
  3. 提出了一种名为RUN的新方法,通过结合时间序列的上下文信息和时间序列预测模型来执行神经Granger因果发现,并使用带个性化向量的PageRank推荐前k个根本原因。

主要贡献

  1. 提出了一种名为RUN的自监督神经Granger因果发现框架,用于捕捉时间序列数据中的上下文信息,并构建多变量时间序列之间的因果图。

  2. RUN框架利用PageRank算法在导出的因果图上识别触发点的根源。

  3. 引入了一种创新的自监督学习方法,专门将具有不同上下文信息的相同时间戳视为正例对,以解决将具有相似周期性的数据点错误识别为负例对的问题。

问题描述

​ 监控系统将通过关键绩效指标(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} XRN×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


http://www.kler.cn/a/465991.html

相关文章:

  • redis源码系列--(四)--redis cluster
  • 【JAVA】用于控制流程的关键字 break、continue、return 使用场景,注意事项和实例
  • Rabbitmq 具体怎么做到削峰的,是丢弃部分消费吗,有的实际场景是不允许丢弃
  • 从0到机器视觉工程师(二):封装调用静态库和动态库
  • Python入门系列之九-数据分析与可视化进阶
  • Mysql SQL 超实用的7个日期算术运算实例(10k)
  • 用python重写了座位表生成器
  • 仓库叉车高科技安全辅助设备——AI防碰撞系统N2024G-2
  • 【74HC192减法24/20/72进制】2022-5-17
  • 在 pandas.Grouper() 中,freq 参数用于指定时间频率,它定义了如何对时间序列数据进行分组。freq 的值可以是多种时间单位
  • 发现一个可用的免费docker镜像源
  • AI智能生成PPT,告别手工操作的新选择
  • 安卓11 SysteUI添加按钮以及下拉状态栏的色温调节按钮
  • MATLAB画柱状图
  • 【Spring学习】为什么Spring中的IOC(控制反转)能够降低耦合性(解耦)?
  • springboot和vue项目前后端交互
  • 竞品分析对于ASO优化的重要性
  • MySql---进阶篇(六)---SQL优化
  • 在 SQL 中获取第m个开始的n条记录方法汇总
  • 亚远景-ASPICE与ISO 26262:汽车软件开发与功能安全的协同作用
  • GitHub Actions 工作流编写指南
  • Mysql8主从复制(兼容低高版本)
  • 【AI部署】腾讯云每月1w小时免费GPU获取
  • DBSCAN 聚类 和 gmm 聚类 测试
  • Gitlab-runner 修改默认的builds_dir并使用custom_build_dir配置
  • Milvus×合邦电力:向量数据库如何提升15%电价预测精度