MicroRank 论文笔记

news/2025/3/7 1:31:25/文章来源:https://www.cnblogs.com/mianmaner/p/18756856

任务

异常检测->根因定位(服务实例级别)(针对延迟问题)

贡献

  • MicroRank 是第一种通过正常和异常trace提取信息来对微服务应用程序进行根本原因定位的方法
  • 我们提出了一种基于扩展频谱分析的微服务环境中新颖的根本原因定位方法
  • 我们将 OpenTelemetry trace API 纳入 Google Cloud 提供的 HipsterShop 微服务的benchmark中。我们的修改使该benchmark具有以前没有的端到端tracing能力
  • 我们设计并实现了一个原型,即 MicroRank,来定位微服务系统中延迟问题的根本原因。我们基于一个广泛使用的开源微服务系统和一个总共有157个故障的生产微服务系统进行了大量的实验。实验结果证明了 MicroRank 相对于最先进方法的有效性

概述

提出 MicroRank 的新方法,该方法基于扩展频谱分析来识别微服务系统中的延迟问题。它主要包括四个程序,包括:

  • Anomaly Detector(异常检测模块)
  • Data Preparator(数据准备模块)
  • PageRank Scorer (PageRank得分计算模块)
  • Weighted Spectrum Rank(加权频谱排名模块)

一旦 MicroRank 中的 Anomaly Detector 检测到延迟问题,就会触发原因定位程序。 Data Preparator 首先区分哪些trace是异常的,并注意服务实例和trace的关系。然后,MicroRank 的 PageRank Scorer 模块使用异常和正常trace信息作为输入,并区分不同trace对扩展频谱技术的重要性。最后,Weighted Spectrum Rank根据来自 PageRank Scorer的加权频谱信息输出潜在根本原因的排名列表

从Trace中提取信息

  • Latency and Handling Time。trace数据包括每条trace的端到端延迟和一条trace中每个操作的处理时间
  • Trace Coverage Graph。由于一条trace中的每个span都包含父子关系信息和服务实例信息,从而可以构建出这样一个树,完整的体现了所有trace的父子调用关系

image-20231109141856259

  • 调用图。根据Trace Coverage Graph中所有节点的服务实例,我们就可以获得不同服务操作之间的调用图

基于以上信息,微服务系统中的延迟问题定位问题的形式化描述如下。给定时间窗口中的一组trace,即 $T=(T_1,\dots,T_n) $,其中 \(T_i = (O_{i1},\cdots, O_{im})\)( Oij 是Ti 中的一个Operation)。我们得到这些trace的端到端延迟,即 $ L = (L_1,\cdots, L_n ) $和覆盖图 G = (V , E),其中 V 是服务实例操作的集合,即 Oij ∈ V。E是调用关系的集合。找出正常trace: \(T_n=(T_{n1} ,\cdots,T_{nk} )\)和异常trace \(Ta=(T_{a1},\cdots,T_{an-k})\)。此外,根据Tn、Ta和G,找到与Oij 相关的根本原因服务实例。最后将与根本原因直接相关的服务实例的排名高于与根本原因无关的服务实例的排名

基于频谱的故障定位

给出元组 (Oef , Oep , Onf , Onp ) 。其中,Oef 表示覆盖程序元素 O 的失败测试用例的数量,Oep 表示覆盖程序元素 O 的通过测试用例的数量。Onf 表示未覆盖程序元素 O 的失败测试用例的数量,Onp 表示未覆盖程序元素 O 的失败测试用例的数量。根据上述元组,可以得出几个风险评估公式,例如Tarantula

MicroRank

image-20231109141913490

Anomaly Detector

提出了一种无监督且轻量级的跟踪级异常检测方法,该方法利用操作处理时间与跟踪覆盖的操作数量之间的关系。第一异常检测器根据离线正常trace数据的一段时间(例如,一小时)计算每个操作的平均处理时间 \(\mu_O\)及其标准差 \(\sigma_O\)

当监控一条Trace时,我们只需要获取一条Trace覆盖了哪些操作以及这些操作被覆盖了多少次,然后根据下面的公式计算 \(L_{expected}\)期待延迟:

image-20231109141932012

其中 counto 表示该跟踪覆盖操作 o 的次数, n用于调整上界值,本文设置n=1.5。

如果期待延迟L excepted 小于该trace的真实延迟,则该trace将被确定为异常trace。一旦Anomaly Detector检测到一条异常trace,它就会触发根因定位阶段。为了避免多次检测到相同的异常状态,这里会在在每次触发后刷新检测窗口(本文中为 5 分钟)。

Data Preparator

对于异常trace列表或正常trace列表中的每个trace ID ,Data Preparator 通过traceID 获取其trace的提取信息。在基于此构建完整的anomalous operation-trace graph

image-20231109141946660

PageRank Scorer

PageRank Scorer由正常评分器和异常评分器组成,并行处理异常和正常线索

基本思想是根据operation-trace graph(例如图 6)评估覆盖每个operation的trace的重要性,从而为每个operation赋予权重。

PageRank Scorer 的key Insights:

  • 如果某个操作被更多异常trace覆盖,则它也更有可能是根本原因
  • 如果异常trace覆盖较少操作,则该痕迹应被视为更重要,因为它的范围较小
  • 如果某类trace出现次数较少,则应多考虑该种trace,防止从多次出现的trace中分流

这里选择Personalized PageRank,因为它是一种分析异构节点图(本文中的operation和trace)的方法。给定一个有向图 G = ⟨V ,E⟩ 包含 n 个节点和 m 个边,并且 E 包含一条有向边 ⟨s, t⟩(如果节点 s 到节点 t)。设A为n×n元素的转移矩阵,所有的Ast将组合成完整的A(Ast被定义为从s开始的随机游走在t终止的概率,反映了t相对于s的重要性)。Ast 的值可由下式计算:

image-20231109142003310

其中 O (s) 表示 s 的出邻居(从s出发可以到达的相邻节点)

然后对于给定的偏好向量 u,Personalized PageRank 方程可以写为:

image-20231109142016836

其中 d 是阻尼因子 (0 ≤ d < 1), v 是偏好向量 u 的Personalized PageRank 向量 (PPV)。结果向量v表示所有节点的排名分数。

PageRank中的相关概念:
①偏好向量 (Preference Vector) u:这是一个向量,它用来表示用户对网络中各个节点(或页面)的偏好程度。每个元素表示用户对特定节点的偏好权重,这些权重可以根据用户的需求来设置。比如当 u是均匀分布向量时,也就是所有元素都相等,意味着用户对所有页面都没有特别的偏好。
②PageRank 向量 v:这是一个向量,它代表了每个节点在 PageRank 算法中的重要性分数。
③Damping Factor (阻尼因子) d:这是一个介于 0 到 1 之间的数值,用于控制 PageRank 算法的随机跳跃概率。

Weighted Spectrum Ranker

操作O的频谱信息可以计算为:

image-20231109142036871

其中F和P表示操作O的异常和正常PageRank得分,Nef和Nep表示操作O覆盖的异常和正常trace的数量,Nf和Np表示当前滑动窗口中异常和正常痕迹的总数

然后,MicroRank 应用频谱排名公式来计算每个操作的可疑度分数。操作名称(例如 front-1/Recv.)包含有关其所属服务实例的信息。因此,MicroRank可以为应用运营商给出一个服务实例的排名列表。表1的右半部分显示了图3中每个服务实例的加权频谱信息和更新的Tarantula分数

image-20231109142126415

数据集

使用了三个数据集,分别称作A、B和C。A和B基于广泛使用的开源微服务系统Hipster-Shop。 A和B之间的主要区别在于,我们在A中每次注入一个故障,而在B中每次注入两个故障。C基于中国移动的生产微服务系统,每次注入一个故障(数据集C是2020年AIOps挑战赛第14期发布的,C基于中国移动浙江移动的真实生产微服务系统。)

image-20231109142321772

实验结果

为了比较各频谱公式的有效性差异,这里总共选择了八个公式

image-20231109142245842

列 PR 代表 MicroRank 中的 PageRank Scorer,列 SP 代表传统的基于频谱的技术,列 MR 代表 MicroRank(PageRank Scorer + 频谱分析)

①Top-k (R@k) 的Recall是指在所有候选服务中可以在前 k 个服务实例中定位根本原因的概率

②EXAM 分数是指 找到所有根因所需要的由操作员手动排除的误报的平均数。如果根本原因不在 Top-5 之列,就为其设置默认误报数 10。对于 ES,越小越好。

image-20231109142156014

发现 MicroRank 受不同公式的影响较小。从结果来看,Ochiai(灰色标记)是我实验中最有效的公式。所以最终采用Ochiai作为默认频谱公式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/894901.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Log3T 论文笔记

挑战 ① 基于可用日志先验知识设计的日志解析器性能有限,且不具有泛化性 ② 一些日志解析器在日志本身差异性大时无法正常工作 ③ 劳动密集型模型调整 框架离线训练 使用 WordPiece 进行 Tokenization(子词模型),然后输入到 Transformer 中进行上下文特征集成,然后输入 si…

软件工程-作业2:第一次个人编程作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023这个作业在哪里 https://edu.cnblogs.com/campus/gdgy/SoftwareEngineeringClassof2023/homework/13324这个作业的目标 系统化流程地完成软件开发,使用性能测试工具和单元测试以优化…

LLaVA 论文笔记

介绍 提出了 visual instruction-tuning,这是将指令微调扩展到多模态的首次尝试 相关工作 多模态的指令微调 Agent、指令微调 数据 使用 ChatGPT/GPT-4 来将数据转化为 multimodel instrustion-following data 为每一个图像生成三种 mulmodal instruction-following data,对于…

FastAPI 请求体参数与 Pydantic 模型完全指南:从基础到嵌套模型实战

title: FastAPI 请求体参数与 Pydantic 模型完全指南:从基础到嵌套模型实战 🚀 date: 2025/3/7 updated: 2025/3/7 author: cmdragon excerpt: 本教程深入探讨 FastAPI 请求体参数与 Pydantic 模型的核心机制,涵盖从基础模型定义到嵌套模型的高级用法。通过详细的代码示例…

主机、主机中的Ubuntu虚拟机、与ixm6ull开发板三者互ping且均能联网个人流程记录

1.0 设备连接要求笔记本通过网线连接到开发板,且笔记本通过 usb转type-c线连接到开发板的对应位置(USB TTL那个)。 笔记本需要连接WIFI。 笔记本、开发板、Ubuntu虚拟机启动且能够正常运行。2.0 打开WIFI的网络共享 控制面板 -> 网络和 Internet -> 网络和共享中心,选…

基于PID控制器的六自由度串联机器人控制系统的simulink建模与仿真

1.课题概述 基于PID控制器的六自由度串联机器人控制系统的simulink建模与仿真。2.系统仿真结果 (完整程序运行后无水印) 3.核心程序与模型 版本:MATLAB2022a 4.系统原理简介六自由度串联机器人控制系统是机器人学中的一个核心问题,其中PID控制器因其简单、实用和易于调整…

Windows快捷方式文件相对路径

前言全局说明Windows快捷方式相对路径 通常情况下创建快捷方式,使用的都是绝对路径,如果文件目录迁移到别的地方,不同路径下,那么这个快捷方式就失效了,如果使用相对路径,只要父文件夹不变,那么子文件夹中的快捷方式就能一直有效。一、说明 1.1 环境: Windows 11 家庭版…

基于GARCH-Copula-CVaR模型的金融系统性风险溢出效应matlab模拟仿真

1.程序功能描述 基于GARCH-Copula-CVaR模型的金融系统性风险溢出效应matlab模拟仿真,仿真输出计算违约点,资产价值波动率,信用溢价,信用溢价直方图等指标。 2.测试软件版本以及运行结果展示MATLAB2022A版本运行 (完整程序运行后无水印) 3.核心程序%计算违约点 DP …

Java笔记-17、Web后端基础 Java操作数据库

JDBCsun公司官方定义的一套操作所有关系型数据库的规范,即接口。 各个数据库厂商去实现这套接口,提供数据库驱动jar包。 我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。public void testUpdate() throws Exception {// 注册驱动Class.forName(&qu…

netcore后台服务慎用BackgroundService

在 .NET Core 开发中,BackgroundService 是一个非常方便的后台任务运行方式,但它并不适用于所有场景。 BackgroundService 一时爽,并发火葬场。 BackgroundService 适用于单实例的无状态后台任务,例如:定期清理任务(删除过期数据、日志清理) 轻量级定时任务(如定期检查…

基于遗传优化SVM的电机参数预测matlab仿真

1.算法运行效果图预览 (完整程序运行后无水印)输入:电机结构参数x1 x2 x3 x4 x5(分别是铁心高度 铁心厚度 绕组匝数 窗口宽度 导线截面积 ) 目标值:体积v、加速度ax、加速度ay和加速度az 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作…

JetBrains Rider 2024软件下载与安装教程

Rider2024是一款基于IntelliJ以及ReSharper所开发的跨平台式的开发环境,并且该软件也是C#、Unity等应用程序的专属开发环境。提供了极为强大的代码编辑器,对于C#和Unity等都能完美兼容,开发者用户们能够在其中轻松自在的编写出代码项目,同时还提供了智能代码补全的功能,提…