TraStrainer: Adaptive Sampling for Distributed Traces with System Runtime State
TL;DR 精炼摘要
TraStrainer提出了一种结合系统运行时状态与追踪多样性的在线自适应采样方法,通过向量编码和动态投票机制优化采样偏好。实验显示其在提高采样质量和根因分析准确率上优于现有技术,显著降低监控开销。
摘要
TraStrainer: Adaptive Sampling for Distributed Traces with System Runtime State HAIYU HUANG, Sun Yat-sen University, China XIAOYU ZHANG, Huawei, China PENGFEI CHEN, ZILONG HE, ZHIMING CHEN, GUANGBA YU, and HONGYANG CHEN, Sun Yat-sen University, China CHEN SUN, Huawei, China Distributed tracing has been widely adopted in many microservice systems and plays an important role in monitoring and analyzing the system. However, trace data often come in large volumes, incurring substantial computational and storage costs. To reduce the quantity of traces, trace sampling has become a prominent topic of discussion, and several methods have been proposed in prior work. To attain higher-quality sampling outcomes, biased sampling has gained more attention compared to random sampling. Previous biased sampling methods primarily considered the importance of traces based on diversity, aiming to sample more edge-case traces and fewer common-case traces. However, we contend that relying solely on trace diversity for sampling is insufficient, system runtime state is another crucial factor that needs to be considered, especially in cases of system failures. In this study, we introduce Tra
思维导图
论文精读
中文精读
1. 论文基本信息
1.1. 标题
TraStrainer: Adaptive Sampling for Distributed Traces with System Runtime State (TraStrainer:基于系统运行时状态的分布式追踪自适应采样)
1.2. 作者
HAIYU HUANG (黄海宇), XIAOYU ZHANG (张晓宇), PENGFEI CHEN (陈鹏飞), ZILONG HE (何子龙), ZHIMING CHEN (陈志明), GUANGBA YU (于广巴), HONGYANG CHEN (陈宏阳), CHEN SUN (孙晨)。 作者分别来自中山大学 (Sun Yat-sen University) 和华为 (Huawei)。
1.3. 发表期刊/会议
Proc. ACM Softw. Eng. 1, FSE, Article 22 (July 2024), 21 pages.
该论文发表于 ACM SIGSOFT/SIGPLAN Symposium on Foundations of Software Engineering (FSE),这是一个在软件工程领域享有盛誉的顶级会议,通常被认为是该领域的四大顶会之一(与 ICSE, ESEC, ASE齐名),其研究成果具有较高的学术影响力和工业应用价值。
1.4. 发表年份
2024年。
1.5. 摘要
分布式追踪 (Distributed Tracing) 对于监控微服务系统至关重要,但它会产生大量数据,导致高昂的计算和存储成本。现有的采样方法通常依赖于追踪的多样性 (trace diversity) 来优先采样,这可能会忽略重要的系统运行时条件 (system runtime conditions),尤其是在发生故障时。本文提出了 TraStrainer,一个集成了系统运行时状态和追踪多样性的在线采样框架。TraStrainer 将追踪编码为向量,并通过分析实时系统指标 (system metrics) 自适应地调整采样偏好。它通过动态投票机制结合系统状态偏置 (system-state bias) 和多样性偏置 (diversity bias) 来选择高价值追踪。实验评估表明,TraStrainer 显著提高了采样质量和下游根因分析 (Root Cause Analysis, RCA) 任务的性能,在两个数据集上的四个基线方法中,Top-1 准确率平均提高了 32.63%,证明了其在生成可操作追踪数据同时降低开销方面的有效性。
1.6. 原文链接
/files/papers/6901a5fc84ecf5fffe471766/paper.pdf
此链接是提供的本地文件路径。根据 ACM 参考格式,该论文已正式发表。
2. 整体概括
2.1. 研究背景与动机
2.1.1. 研究背景
在当今高度动态且不可预测的工业微服务系统 (microservice systems) 中,分布式追踪 (Distributed Tracing) 已被广泛采用作为监控和分析的关键工具。通过 OpenTelemetry 或 SkyWalking 等框架,可以记录请求在服务实例间端到端的路径,形成追踪数据。这些分布式追踪为评估风险、故障排查 (troubleshooting) 和理解系统复杂性提供了宝贵的洞察。站点可靠性工程师 (Site Reliability Engineers, SREs) 广泛利用它们来进行环境画像 (profiling)、异常检测 (anomaly detection) 和故障诊断 (diagnose failures)。
2.1.2. 核心问题与动机
尽管分布式追踪具有极高的分析价值,但其庞大的数据量和高昂的存储成本是一个显著问题。每天数百万到数十亿的追踪数据使得对其进行全面的分析和存储变得不切实际且计算成本高昂。为了解决这一问题,追踪采样 (trace sampling) 技术应运而生,旨在选择性地捕获那些“有价值”的追踪。
然而,现有的采样方法存在以下挑战和空白:
-
头部采样 (Head-based Sampling) 的局限性: 诸如
Jaeger和Zipkin等系统使用的统一随机采样 (uniform random sampling) 方法在追踪开始时就决定是否采样,无法根据追踪的实际内容(例如是否异常或有价值)进行决策,导致低质量追踪被保留。 -
传统偏置采样 (Biased Sampling) 的不足: 针对头部采样的缺点,尾部采样 (tail-based sampling) 被提出,它在请求结束时进行采样决策,从而可以利用完整的追踪信息来判断其价值。然而,之前的偏置采样方法主要关注追踪的“多样性”或“边缘案例” (edge-case traces),倾向于保留与常见模式差异较大的追踪。这种方法的核心直觉是边缘案例更具信息量。
-
忽略系统运行时状态 (System Runtime State): 现有方法在任何系统运行点上都保持相同的采样偏好(即偏好稀有追踪),但它们忽略了系统运行时状态的关键上下文。论文强调,一个追踪的“价值”会随着系统状态的变化而改变。例如,当
SQL服务器出现异常时,SRE会更关注访问数据库的追踪,因为它们更可能反映问题。而这些追踪在正常情况下可能被认为是“常见案例”,从而被现有方法忽略。 -
常见案例追踪的潜在价值: 仅仅偏好边缘案例追踪是不够的。有些“常见案例”追踪也可能与根因相关,例如线程池耗尽问题可能是由大量并发请求引起的,这些请求本身的追踪可能看起来正常。此外,下游分析方法(如
RCA)通常需要一定数量的常见案例追踪来学习正常模式。 -
大量异常追踪时的选择困难: 在系统故障时,可能出现大量异常追踪,如果异常率超过采样预算,仅基于“异常”来采样的能力将受限,需要更具体的规则来捕获其中更有价值的部分。
论文以华为的真实故障案例 (参见
Figure 3) 为例,进一步说明了现有采样方法在系统故障时可能遗漏关键追踪。在Node A的 CPU 利用率升高并导致不可用的情况下,早期阶段(CPU 利用率升高但尚未崩溃)的追踪看起来可能正常,但它们是发现根因的关键。现有采样器会因为它们是“常见案例”而忽略它们。这促使作者提出一种结合系统状态信息来动态调整采样偏好的方法。
2.2. 核心贡献/主要发现
本文的主要贡献体现在以下几个方面:
- 提出了
TraStrainer框架: 引入了一个创新的在线偏置追踪采样器TraStrainer,它通过同时考虑系统运行时状态和追踪多样性来更全面地确定采样偏好,解决了现有方法在系统故障时盲目性的问题。 - 可解释且自动化的追踪表示方法: 提出了一种新颖的追踪编码方法。生成的追踪向量不仅包含追踪的结构信息,也包含状态信息,并且每个系统指标都对应向量中的一个特定维度,从而确保了可解释性和自动化处理。
- 深入分析采样对下游
RCA任务的影响: 结合多种经典追踪分析方法与不同的采样策略,系统性地研究了采样方法对下游根因分析 (RCA) 任务性能的影响,为实际应用提供了指导。 - 全面的实验验证: 实现了
TraStrainer,并构建了两个数据集(一个来自华为的生产微服务系统,另一个基于开源基准)进行全面的评估。实验结果表明,TraStrainer在相同预算下能识别更多有价值的追踪,并显著提升下游分析任务的性能,相比四个基线方法,Top-1RCA准确率平均提高了 32.63%。此外,TraStrainer还展示了比其他在线偏置采样方法更高的效率。
3. 预备知识与相关工作
3.1. 基础概念
3.1.1. 分布式追踪 (Distributed Traces)
概念定义: 分布式追踪是一种用于监控和诊断微服务系统中请求在多个服务间流动路径的技术。当一个用户请求进入微服务系统时,它会触发一系列跨越不同服务的操作。分布式追踪将这些操作关联起来,形成一个完整的请求处理链条。
组成: 一个追踪 (trace) 通常由一系列 span 组成,每个 span 代表请求在单个服务或组件中的一次操作(如一次函数调用、一次数据库查询)。span 之间通过 parent-child 关系连接,形成一个树状或有向无环图 (DAG) 结构,反映了服务调用的顺序和层级。每个 span 包含诸如操作名称、服务名称、开始时间、持续时间、状态码以及事件注释 (event annotations) 等信息。
作用: 分布式追踪数据能够提供对系统行为的端到端视图,对于风险评估、故障排查、性能瓶颈定位、以及理解服务间依赖关系至关重要。
3.1.2. 微服务 (Microservices)
概念定义: 微服务是一种架构风格,它将一个应用程序构建为一组小型、独立的服务,每个服务都运行在自己的进程中,并通常通过轻量级机制(如 HTTP API)进行通信。每个微服务围绕业务能力构建,并可以由小型、独立的团队进行开发和部署。 特点: 高度去中心化、独立部署、弹性强、可扩展性好、技术栈多样化。
3.1.3. 追踪采样 (Trace Sampling)
概念定义: 追踪采样是指从所有生成的分布式追踪中选择一个子集进行收集、存储和分析的过程。由于分布式追踪数据量巨大,完全收集和处理所有追踪是不切实际的,因此采样是降低成本和提高分析效率的必要手段。 目的:
- 降低成本: 减少存储、传输和计算资源的消耗。
- 提高效率: 加快下游分析任务的速度。
- 筛选价值: 保留对系统监控、故障诊断和性能分析最有洞察力的追踪。 分类:
- 头部采样 (Head-based Sampling): 在追踪开始时(即请求首次进入系统时)决定是否采样。一旦决定采样,该追踪的所有
span都会被收集;如果决定不采样,则整个追踪都会被丢弃。- 优点: 简单、高效,不增加请求延迟。
- 缺点: 无法根据追踪的实际内容或结果(如是否报错、是否慢)进行决策,可能导致有价值的追踪被丢弃,或收集大量不重要的“正常”追踪。例如,
Jaeger和Zipkin的随机采样 (Random Sampling) 属于此类型。
- 尾部采样 (Tail-based Sampling) / 偏置采样 (Biased Sampling): 在追踪完成时(即请求的最后一个
span结束后)进行采样决策。此时,可以获取追踪的完整信息(如总延迟、错误状态、涉及的服务),从而根据预设的“价值”标准(例如,异常追踪、延迟过高的追踪)来决定是否保留。- 优点: 能够捕获完整且有价值的追踪,确保分析质量。
- 缺点: 需要先收集所有
span到一个中心点进行决策,这会增加延迟和中间存储开销。
3.1.4. 系统指标 (System Metrics)
概念定义: 系统指标是一系列随时间变化的测量数据,用于量化和反映系统各个组件(如 CPU、内存、网络、磁盘、数据库连接池等)的运行时状态和性能特征。
组成: 典型的系统指标数据是时间序列数据,通常包含四个主要组成部分:
- 时间戳 (timestamp): 指标被测量的时间点。
- 节点或 Pod 归属 (node or pod affiliation): 指标来源于哪个物理机、虚拟机或容器实例。
- 指标类型 (metric type): 指标的具体含义,如
CPU利用率 (CPU usage)、内存使用量 (memory usage)、网络 I/O、磁盘 I/O、请求延迟 (request latency)、错误率 (error rate) 等。 - 值 (value): 在特定时间点测得的指标数值。 作用: 系统指标是监控系统健康状况和识别潜在问题的关键。它们的波动和趋势可以直接指示系统是否存在异常或瓶颈。
3.1.5. 根因分析 (Root Cause Analysis, RCA)
概念定义: 根因分析是在系统故障、性能下降或异常发生后,系统性地识别导致这些问题发生的根本原因的过程。它的目标是找出问题的源头,而不仅仅是表面的症状,以便采取有效的措施来永久解决问题或防止其再次发生。 目的: 通过分析各种可观测数据(如日志、指标、追踪),找出导致故障的服务、组件、代码变更或配置错误。
3.2. 前人工作
3.2.1. 基于追踪的分析方法 (Trace-based Analysis Approaches)
- 异常检测 (Anomaly Detection, AD) 和根因分析 (RCA):
Nedelkoski et al.[28] 提出了一种使用多模态LSTM网络从追踪数据中学习来检测异常的方法。TraceAnomaly[26] 利用变分自编码器 (Variational Autoencoders, VAE) 模型离线学习正常追踪模式,然后在线检测异常追踪并定位根因。TraceRCA[23] 和MicroRank[45] 通过分析正常和异常调用 (invocation) 的比例,并应用频谱分析 (spectrum analysis) 来识别根因服务。Sage[10] 利用因果贝叶斯网络 (causal Bayesian networks) 和图变分自编码器 (graphical variational autoencoders) 来精确定位根因微服务。FSF[35] 利用故障传播知识和客户端-服务器通信模型来推断根因。
3.2.2. 追踪采样方法 (Trace Sampling Approaches)
- 统一随机采样 (Uniform Random Sampling):
Dapper[37]、Jaeger[17] 和Zipkin[2] 等追踪系统早期采用的方法。它无法保证采样追踪的质量。 - 偏置采样 (Biased Sampling): 旨在捕获更有价值的追踪。
- 离线方法:
PERCH[20] 提出了一种使用分层聚类 (hierarchical clustering) 的方法,通过标签计数来偏置采样,以最大化追踪的多样性。但主要用于离线采样。 - 在线方法:
Sifter[21] 是一种在线采样方法,它近似分布式系统的常见行为模型,并偏向于采样那些在该模型中表示不佳的新追踪(即边缘案例)。Sieve[16] 提出了一种在线采样器,通过使用鲁棒随机森林切割 (Robust Random Cut Forest, RRCF) 来检测异常追踪并以高概率采样它们。TraceCRL[51] 利用对比学习 (contrastive learning) 和图神经网络 (Graph Neural Network, GNN) 技术将追踪数据编码成向量,然后基于这些向量表示的多样性进行采样。SampleHST[11] 基于从半空间树 (Half Space Trees, HST) 森林获得的质量分数分布,偏向于边缘案例。Hindsight[52] 描述并实现了追溯采样 (retroactive sampling),它延迟检索追踪数据,以便在追踪生命周期的早期阶段执行偏置采样,旨在提高偏置采样的效率。
- 离线方法:
3.3. 技术演进
分布式追踪采样的技术演进大致经历了从简单到复杂、从通用到智能、从离线到在线的过程:
- 随机采样阶段: 最初的追踪系统(如
Dapper、Jaeger、Zipkin)主要采用简单的随机采样,以应对数据量过大的问题。这种方法实现简单,但无法保证采样数据的质量,可能导致重要故障追踪被丢弃。 - 早期偏置采样阶段: 认识到随机采样的局限性后,研究开始探索如何“偏向”采样有价值的追踪。早期的工作(如
PERCH)主要采用离线分析和聚类,以最大化采样追踪的多样性,但离线方法的实时性不足。 - 在线偏置采样阶段(基于多样性): 随着对实时监控需求的增加,在线偏置采样方法成为主流。这一阶段的工作(如
Sifter、Sieve、TraceCRL、SampleHST)普遍将“追踪多样性”或“边缘案例”作为采样偏好的核心。它们通过各种技术(如近似常见行为模型、异常检测、对比学习)来识别并优先采样那些与主流模式不同的追踪。 - 多模态偏置采样阶段(本文
TraStrainer): 本文的工作代表了技术演进的最新方向。它超越了单一关注追踪多样性的范式,创新性地引入了系统运行时状态作为另一个核心采样偏好维度。这意味着采样决策不再仅仅基于追踪自身的特性,而是结合了系统整体健康状况和指标波动等外部上下文信息,使得采样更加智能和情境感知。
3.4. 差异化分析
TraStrainer 与现有相关工作的主要区别和创新点在于:
-
采样偏好的全面性: 现有的偏置追踪采样方法(如
Sifter、Sieve、TraceCRL、SampleHST)主要基于一个核心原则:偏向于采样边缘案例追踪或具有多样性的追踪。它们在设置采样偏好时,仅依赖于追踪自身的信息。TraStrainer则采取了更全面的方法,它不仅考虑了追踪多样性,还开创性地将系统运行时状态的影响纳入了采样偏好决策中。 -
多模态信息融合: 传统的采样方法局限于利用单一模态信息——即追踪数据本身。
TraStrainer突破了这一限制,它同时利用了追踪数据和系统状态指标这两种模态的信息,通过多模态融合来获得更高质量的采样结果。这种方法使得TraStrainer能够动态调整采样策略,例如,在特定系统指标出现异常时,即使某些追踪看起来是“常见案例”,但如果它们与该异常指标相关,也会被赋予更高的采样概率。 -
对下游分析的优化:
TraStrainer的设计考虑了下游追踪分析方法(如RCA)的需求。通过提供更高质量的采样数据,它显著提升了RCA任务的性能。它能够捕获那些对诊断故障至关重要的追踪,即使这些追踪在没有系统上下文的情况下可能被误判为低价值。简而言之,
TraStrainer的核心创新在于其更具情境感知 (context-aware) 的采样策略,即在考虑追踪自身特性的同时,融入了系统外部的、实时的运行状态信息,从而实现了更智能、更有效的“有价值”追踪捕获。
4. 方法论
4.1. 方法原理
TraStrainer 的核心思想是,为了选择更有价值的追踪并同时降低存储和计算成本,它必须同时考虑系统运行时状态 (system runtime state) 和追踪多样性 (trace diversity)。这使得 TraStrainer 能够自适应地提供更全面的采样偏好。
TraStrainer 框架的整体架构如下图 Figure 4 所示,它由以下主要组件组成:
该图像是论文中Fig.4展示的TraStrainer系统架构示意图,包含系统运行状态和Trace编码器提取特征,随后通过系统偏置采样器和多样性偏置采样器,最终经复合采样器决定采样结果,实现高价值Trace选择。
Fig. 4. An overview of TraStrainer.
-
运行时数据预处理 (Runtime Data Preprocessing) 阶段:
- Trace Encoder (追踪编码器,§ 4.1): 接收传入的追踪数据。它使用一种可解释且自动化的方法,将追踪编码为向量表示。这些向量不仅包含追踪的结构信息,还包含其状态信息,其中每个系统指标都对应向量中的一个特定维度。
- System Bias Extractor (系统偏置提取器,§ 4.2): 同时接收系统指标数据。它动态计算每个系统指标的异常程度 (anomaly degree)。这个异常程度作为相应指标维度在采样时的偏好权重。异常程度越大,偏好权重越高。所有指标的偏好权重共同形成一个偏好向量 (preference vector),用于指示当前哪些维度(即哪些指标)更具价值。
-
在线综合采样 (Online Comprehensive Sampling) 阶段:
- System-Biased Sampler (系统偏置采样器,§ 4.3): 根据
System Bias Extractor生成的偏好向量,为传入的追踪计算一个系统偏置采样概率 (system-biased sampling probability)。 - Diversity-Biased Sampler (多样性偏置采样器,§ 4.4): 通过比较传入追踪与历史追踪的结构和状态差异(即多样性),计算一个多样性偏置采样概率 (diversity-biased sampling probability)。
- Composite Sampler (复合采样器,§ 4.5): 结合了上述两个采样器提供的采样概率。它利用一个动态投票机制 (dynamic voting mechanism),根据采样预算 (sampling budget) 和当前采样频率 (current sampling frequency) 来做出最终的采样决策,决定是否保留该追踪。
- System-Biased Sampler (系统偏置采样器,§ 4.3): 根据
4.2. 核心方法详解
4.2.1. Trace Encoder (追踪编码器)
目的: 将非机器可读的追踪数据转换为机器友好的格式(如向量),以便进行后续分析。TraStrainer 的 Trace Encoder 解决了以往方法手动干预多、可解释性差的问题,通过系统指标指导自动化编码,确保结果向量的维度可解释。
追踪的编码分为状态相关 (status-related) 和结构相关 (structure-related) 两部分,如下图 Figure 5 所示。
该图像是论文Fig.5中的示意图,展示了将输入的分布式追踪数据按状态相关和结构相关两部分进行特征提取的流程。追踪中的每个Span被编码为向量,其中包括计算的权重,如公式,并利用调用树的层级结构进行特征计算。
Fig. 5. The process of encoding traces in two parts: status-related and structure-related. preference weight for the corresponding metric dimension. The larger the anomaly degree, the higher the preference weight. The preference weights for each dimension form a preference vector that determines which dimensions are more valuable.
4.2.1.1. 编码追踪的状态相关部分
核心思想: 将追踪视为一个 span 包 。每个 span 代表一次操作,包含持续时间 (duration)、状态码 (status code)、关联的节点或 Pod (node or pod) 以及事件注释 (event annotations) 等信息。以往的方法多依赖人工经验选择相关信息,TraStrainer 利用系统指标自动确定所需特征。
-
定义 1 (ReLated Sub SPan BAG ):
- 概念定义: 对于一个系统指标 ,它由其所属的节点
m.node和指标类型m.type组成。对于一个追踪 及其包含的span包 ,Related Sub Span Bag是 的一个子集,其中包含所有与指标 相关的span。 - 条件: 集合中的
span必须满足两个条件:s_mi.node = m.node(即span发生在与指标 相同的节点上)和m.type与s_mi.annotation相关联(即span的行为与指标类型相关)。 - 示例: 如
Figure 5所示,span 3和span 4是指标 的相关span。
- 概念定义: 对于一个系统指标 ,它由其所属的节点
-
定义 2 (Feature Value ):
- 概念定义:
feature value用于量化追踪 在指标 对应维度上的特征值。它综合考虑了与指标 相关的span的异常情况和总持续时间。 - 数学公式:
- 符号解释:
- : 上述定义的
Related Sub Span Bag。 - : 中所有异常
span的集合,其中 是异常的。 - : 集合 中异常
span的数量。 - : 中第 个
span的持续时间。 - : 中
span的总数。
- : 上述定义的
- 目的: 该公式通过异常
span数量(加 1 是为了避免因子为零)和相关span的总持续时间来衡量该维度(即该指标)在当前追踪中的重要性或影响程度。
- 概念定义:
4.2.1.2. 编码追踪的结构相关部分
核心思想: 追踪的结构以调用树 (invocation tree) 的形式展示服务操作的顺序和层级。
- 处理异步调用: 考虑到生产环境中异步调用可能导致同一层级
span顺序变化,TraStrainer更关注span的调用层级关系 (invocation hierarchy),而非严格的同层span顺序。 - 特征表示: 追踪调用树的每一层都被编码为向量表示中的一个特征。每个
span在其层级中由其父span、方法名 (method name) 和参数 (argument)(统称为pma)来表示。如果某个深度没有span,则填充null。
4.2.1.3. 维度可伸缩性和缩减 (Dimension scalability and reduction)
- 可伸缩性:
Trace Encoder能够自动扩展向量维度。例如,当引入新指标时,只需自动识别相关子span包并进行统计。 - 维度缩减:
- 状态相关部分: 如果发现两个指标的维度值在一段时间内始终相同,则将这些维度合并。
- 结构相关部分: 针对追踪调用深度过大导致的冗余,
Trace Encoder仅关注近期追踪。如果具有较大深度的维度在所有近期追踪中都未出现对应值,则移除这些维度。
4.2.2. System Bias Extractor (系统偏置提取器)
目的: 自适应地确定哪些系统指标在当前时刻更值得关注,并生成一个维度偏好向量 (dimension preference vector)。 核心思想: 通过比较当前系统指标值与预期值,评估各项指标的异常程度。
该图像是图6的示意图,展示了度量指标异常程度的评估流程。通过对历史数据窗口进行趋势和剩余量的线性建模,计算期望值,再结合当前值计算异常程度α,用于构成偏好向量。
Fig. 6. An example of assessing the anomaly degree of metrics.
-
评估指标的异常程度 (Assess the anomaly degree of metrics):
- 输入: 每个指标 都是一系列时间序列数据,表示为 。
- 目标: 在线计算当前时间点 各指标的异常程度 ,基于一个回溯窗口 内的历史时间序列数据。
- 模型选择: 考虑到在线处理的低延迟要求,且需要学习历史周期性模式,
TraStrainer采用了DLinear算法 [49](一种结合分解方案和线性层的轻量级时间序列预测模型)。该模型以历史时间序列数据窗口作为输入,输出当前时间点的预期值 。 - 异常程度计算: 实际值 与预期值 之间的差异用于衡量异常程度。
- 符号解释:
- : 当前时刻 的指标实际值。
- :
DLinear模型预测的当前时刻 的指标预期值。 - : 实际值和预期值中的较大者,用于对异常程度进行归一化。
- : 计算得到的指标异常程度。
-
形成偏好向量 (Form the preference vector):
- 将每个指标 的异常程度 直接作为其偏好分数 。
- 所有指标的偏好分数构成当前时刻的偏好向量 。
4.2.3. System-Biased Sampler (系统偏置采样器)
目的: 优先采样与系统内部波动高度相关的追踪。 核心思想: 维护一个近期收集追踪的回溯窗口,计算传入追踪的“关注分数向量” (attention score vector),然后与当前的“系统偏好向量”进行点乘,以确定系统偏置采样概率。
-
计算关注分数向量 (Calculate the attention score vector):
- 回溯窗口: 维护一个动态的回溯窗口 ,包含最近的 个追踪向量。
- 追踪向量: 这里仅考虑每个追踪向量的状态相关部分,表示为 。
- 统计量: 对于每个维度 ,计算回溯窗口内前 个追踪向量在该维度上取值的均值 和标准差 。
- 关注分数计算: 对于即将到来的追踪 ,其在维度 上的关注分数 衡量了该维度与历史追踪相比的资源利用率增长。
- 符号解释:
- : 即将到来的追踪 在维度 上的特征值(由
Trace Encoder得到)。 - : 回溯窗口内所有追踪在维度 上的特征值的均值。
- : 回溯窗口内所有追踪在维度 上的特征值的标准差。
- : 追踪 在维度 上的关注分数。
- : 即将到来的追踪 在维度 上的特征值(由
- 关注分数向量: 所有维度的关注分数构成关注分数向量 。
-
计算系统偏置采样概率 (Calculate the system-biased sampling probability):
- 当一个传入追踪在偏好分数高的维度上获得更高的关注分数时,它就越值得保留。
TraStrainer将传入追踪的关注分数向量 与当前偏好向量 进行点乘,然后应用tanh函数将结果映射到[0, 1]范围,得到系统偏置采样概率 。- 符号解释:
- : 即将到来的追踪 的系统偏置采样概率。
- :
System Bias Extractor生成的当前偏好向量。 - : 追踪 的关注分数向量。
- : 向量 和 的点积,表示追踪与系统偏好(即当前系统异常焦点)的匹配程度。
- : 这是一个
tanh函数的变体,用于将点积结果归一化到[0, 1]范围,作为采样概率。
4.2.4. Diversity-Biased Sampler (多样性偏置采样器)
目的: 识别边缘案例追踪 (edge-case traces) 并赋予其更高的采样概率。 核心思想: 对回溯窗口内的追踪向量进行聚类,当新追踪到来时,计算其与最近集群的相似度以及该集群的“质量” (mass,即包含的追踪数量),以此来计算多样性偏置采样概率。
-
聚类回溯窗口内的追踪 (Cluster traces within the look-back window):
- 对于回溯窗口 内的追踪向量,进行聚类,得到 个集群 。
- 计算每个集群包含的追踪数量,即为该集群的质量 (mass),表示为 。
-
计算多样性偏置采样概率 (Calculate the diversity-biased sampling probability):
- 对于即将到来的追踪 ,计算其与每个集群的
Jaccard相似度 [29]。 - 选择与 相似度最高的集群作为其最近集群 。
- 最近集群的质量 反映了其普遍性(
commonality)。 TraStrainer使用以下公式计算多样性偏置采样概率 :集群质量 越小,Jaccard相似度 越小,则新追踪 的“非普遍性” (uncommonness) 越大,其采样概率越高。- 符号解释:
- : 即将到来的追踪 的多样性偏置采样概率。
- : 与追踪 最接近的集群的质量(即该集群中追踪的数量)。
- : 追踪 与其最接近集群的
Jaccard相似度。 - 分母是一个归一化因子,对所有 个追踪(包括当前追踪 )的 值进行求和。
- 目的: 通过惩罚常见集群中的高相似度追踪,来优先选择那些稀有或独特的追踪。
- 对于即将到来的追踪 ,计算其与每个集群的
4.2.5. Composite Sampler (复合采样器)
目的: 综合 System-Biased Sampler 和 Diversity-Biased Sampler 的结果,并根据采样预算动态调整,做出最终的采样决策。
核心思想: 利用一个动态投票机制 (dynamic voting mechanism) 来结合两个采样器的布尔决策。
该图像是图7的示意图,展示了动态投票机制的过程,该机制结合系统偏置和多样性偏置的采样结果,通过比较当前采样率 与预算采样率 ,利用 AND/OR 门决策最终采样结果。
Fig. 7. The process of the dynamic voting mechanism that takes the budget into account to combine the sampling results from the two previous samplers.
-
决策过程:
System-Biased Sampler和Diversity-Biased Sampler分别为传入追踪 提供系统偏置采样概率 和多样性偏置采样概率 。TraStrainer生成一个[0, 1]范围内的随机数。- 将此随机数分别与 和 进行比较。如果采样概率大于随机数,则该方面的采样结果被认为是
True;否则为False。
-
动态投票机制 (Dynamic Voting Mechanism):
- 为了使整体采样率与预期的预算采样率 对齐,
TraStrainer动态跟踪近期采样频率 。 - 策略 1 (收紧采样规则): 如果 大于 (即当前采样量超出了预算),则采用
AND门作为投票机制。这意味着只有当System-Biased Sampler和Diversity-Biased Sampler都产生True结果时,TraStrainer才会采样该追踪。 - 策略 2 (放宽采样规则): 如果 小于 (即当前采样量低于预算),则采用
OR门作为投票机制。这意味着只要两个采样器中至少有一个产生True结果,TraStrainer就会采样该追踪。 - 最终的投票结果决定了传入追踪 是被存储还是被丢弃。
- 为了使整体采样率与预期的预算采样率 对齐,
5. 实验设置
TraStrainer 的评估围绕以下四个研究问题 (RQs) 展开:
- RQ1:
TraStrainer采样的追踪质量与基线方法相比如何? - RQ2:
TraStrainer在下游基于追踪的根因分析任务中与基线方法相比效果如何? - RQ3: 同时考虑系统运行时状态和追踪多样性对
TraStrainer的有效性贡献有多大? - RQ4:
TraStrainer的采样效率如何?
5.1. 数据集
实验使用了两个数据集进行评估:Dataset A 和 Dataset B。
以下是原文 Table 1 的结果:
| Dataset | MicroserviceBenchmark | TraceNumber | MetricNumber | BatchNumber | UncommonLabel Rate | Problem-relatedLabel Rate | Fault TypesNumber |
| F | 13 ProductionMicroservice systems | 909,797 | 121 | 62 | 2.5% | 2.5% | 6 |
| B | OnlineBoutique andTrainTicket | 112,000 | 32 | 56 | 5.0% | 5.0% | 5 |
5.1.1. Dataset A ()
- 来源: 来自华为的 13 个真实生产微服务系统。
- 规模: 包含 284 个服务和 1327 个节点。收集了 2023 年 4 月至 8 月期间发生的 62 起故障事件的追踪数据和指标数据,形成了 62 个批次 (batch)。
- 特点: 故障类型多样,包括高
CPU负载、网络延迟、慢SQL执行、第三方包调用失败、代码逻辑异常和线程池耗尽等 6 种类型。 - 数据量: 总计 909,797 条追踪和 121 个指标。
- 标注:
SRE和技术专家对异常 (uncommon) 和问题相关 (problem-related) 追踪进行了标注,平均标签率为 2.5%。此外,还标注了每个批次的实际根因,用于评估下游根因分析的准确性。
5.1.2. Dataset B ()
- 来源: 基于两个广泛使用的开源微服务基准:
OnlineBoutique[12] 和TrainTicket[9]。 - 部署环境: 部署在由 12 台虚拟机组成的
Kubernetes[1] 平台上,每台虚拟机配置 8 核 2.10GHzCPU、16GB 内存,运行Ubuntu 18.04 OS。 - 数据收集: 使用
OpenTelemetry Collector[31] 收集追踪数据,并存储在Grafana Tempo[13] 中。 - 故障注入: 使用
Chaosblade[4] 工具注入了 56 种故障,模拟微服务系统中的延迟或可靠性问题。 - 故障类型: 包括
CPU争用、CPU消耗、网络延迟、代码异常和错误返回等 5 种类型。 - 数据量: 总计 112,000 条追踪和 32 个指标。
- 标注: 根据注入的故障位置和类型标注了异常追踪和问题相关追踪,平均标签率为 5.0%。
5.2. 评估指标
为了评估 TraStrainer 的性能,论文采用了采样质量和下游根因分析两类指标。
5.2.1. 采样质量指标
-
Proportion (PRO,比例):
- 概念定义: 反映采样方法偏向有价值追踪的能力。该指标衡量的是在所有标记为“有价值”的追踪中,有多少比例被成功采样。值越高表明偏置能力越强。
- 数学公式:
- 符号解释:
- : 总的标记追踪数量(例如,总的异常追踪数量)。
- : 被采样的标记追踪数量。
- 本文中的变体: 论文评估了三种
PRO变体:异常追踪的比例 (PROof uncommon traces)、问题相关追踪的比例 (PROof problem-related traces) 和同时异常且问题相关追踪的比例 (PROof traces that are both uncommon and problem-related)。
-
Diversity (DIV,多样性):
- 概念定义: 反映采样方法提供有代表性样本的能力。它衡量了采样结果中包含的不同追踪模式的数量。值越高表明采样的多样性越好,能够捕获更广泛的系统行为。
- 数学公式:
- 符号解释:
- : 采样后获得的追踪集合。
- : 基于执行路径(
execution path)对采样追踪进行聚类后得到的追踪模式集合。 - : 追踪模式的数量。
5.2.2. 下游根因分析 (RCA) 任务评估指标
-
Top-k 准确率 (
A@k):- 概念定义: 表示真实根因存在于分析结果的前 个位置列表中的概率。这是一个衡量
RCA方法召回率和排序准确性的指标,越高越好。 - 数学公式:
- 符号解释:
- : 总的问题数量。
- : 第 个问题的真实根因。
- : 第 个问题的
RCA方法返回的前 个结果列表。 - : 一个布尔指示函数,如果真实根因 存在于 中则为 1,否则为 0。
- 概念定义: 表示真实根因存在于分析结果的前 个位置列表中的概率。这是一个衡量
-
Mean Reciprocal Rank (MRR,平均倒数排名):
- 概念定义: 表示真实根因在返回列表中的排名倒数的平均值。如果真实根因排名靠前,
MRR值会更高。如果真实根因不在结果列表中,其排名被视为无穷大,倒数为 0。越高越好。 - 数学公式:
- 符号解释:
- : 总的问题数量。
- : 第 个问题真实根因在返回列表中的排名。
- 概念定义: 表示真实根因在返回列表中的排名倒数的平均值。如果真实根因排名靠前,
5.3. 对比基线
5.3.1. 采样方法基线
为了评估 TraStrainer 的有效性和效率,论文将其与四种基线采样方法进行了比较:
- Random (随机采样): 头部采样 (head-based sampling),以等概率决定是否捕获每个追踪。
- HC (Hierarchical Clustering): 一种离线尾部采样 (offline tail-based sampling) 方法,通过分层聚类和标签计数来偏置采样,旨在最大化追踪的多样性。
- Sifter: 一种在线尾部采样 (online tail-based sampling) 方法,它近似分布式系统的常见行为,并偏向于采样那些在该模型中表示不佳的新追踪(即边缘案例)。
- Sieve: 一种在线尾部采样方法,它使用鲁棒随机切割森林 (Robust Random Cut Forest, RRCF) 来检测异常追踪,并以高概率采样它们。
5.3.2. 下游根因分析 (RCA) 方法基线
为了评估采样方法对分析结果的影响,论文将 TraStrainer 与以下三种最先进的基于追踪的 RCA 方法结合使用:
- TraceAnomaly [26]: 利用深度学习(具体是变分自编码器
VAE)离线学习正常追踪模式,然后在线检测异常追踪并定位根因。 - TraceRCA [23]: 使用频谱分析 (spectrum analysis) 通过分析正常和异常调用 (
invocation) 的比例来识别根因服务。 - MicroRank [45]: 结合个性化
Pagerank方法和频谱分析来识别并排序根因。
5.3.3. TraStrainer 变体 (消融实验)
为了评估系统状态和追踪多样性结合的贡献,论文创建了两个 TraStrainer 的变体并进行了消融实验:
- TraStrainer w/o M (TraStrainer without System Metrics): 仅考虑追踪多样性来设置采样偏好。通过将
Diversity-Biased Sampler的采样结果直接作为最终采样结果来实现。 - TraStrainer w/o D (TraStrainer without Diversity): 仅考虑系统运行时状态来设置采样偏好。通过将
System-Biased Sampler的采样结果直接作为最终采样结果来实现。
6. 实验结果与分析
本节详细分析了 TraStrainer 在采样质量、对下游根因分析任务的有效性以及效率方面的实验结果。
6.1. 核心结果分析
6.1.1. RQ1: TraStrainer 的采样质量
评估包括偏置采样 (bias sampling) 和代表性采样 (representative sampling) 两个方面。实验在 Dataset A 和 Dataset B 上进行,设置了 0.1%、1%、2.5%、5% 和 10% 的不同预算采样率,涵盖了高于和低于标签率的预算。
6.1.1.1. 偏置采样 (Bias Sampling)
下图(原文 Figure 8)展示了在两个数据集中,不同预算设置下各种方法采样的异常、问题相关以及异常且问题相关追踪的比例。
该图像是图表,展示了图8中两组数据集中不同采样预算下多种采样方法对罕见、相关及罕见相关追踪的采样比例,TraStrainer方法在各类指标中表现出显著优势。
Fig. 8.Proportions of uncommon, related, and uncommon-related traces sampled by different approaches across different budget settings in two datasets.
-
偏向异常追踪 (
Bias towards uncommon traces):TraStrainer和Sieve表现出相似的卓越性能,明显优于其他三种方法。Random采样的比例大致等于预算采样率,因为它没有特定的偏好。HC和Sifter仅考虑追踪结构而忽略时间延迟,因此无法识别仅在执行时间上存在差异的异常追踪,在两个数据集上的比例均未超过 0.7。TraStrainer与Sieve对比:TraStrainer在低预算时表现更优,这得益于其基于指标的编码方法能有效区分异常。然而,当预算接近标签率(Dataset A为 2.5%,Dataset B为 5%)时,TraStrainer的比例略低于Sieve。这是因为TraStrainer除了偏向异常追踪外,还偏向包含一些常见追踪的问题相关追踪。当预算超过标签率的两倍时,TraStrainer和Sieve都能达到 1 的比例,即捕获了所有异常追踪。
-
偏向问题相关追踪 (
Bias towards problem-related traces):Figure 8 (a2)和 显示,TraStrainer在两个数据集上均显著优于所有四个基线。Sieve、Sifter和HC的比例增长与Random相似,在两个数据集中均低于 0.5。TraStrainer在设置采样偏好时考虑了系统运行时状态。当预算等于标签率时,问题相关追踪的比例约为 0.6。当预算达到标签率的两倍时,比例接近 1.0,意味着所有问题相关追踪都被捕获。
-
偏向异常且问题相关追踪 (
Bias towards uncommon problem-related traces):Figure 8 (a3)和 显示,TraStrainer在较低预算下也优于基线方法。- 当预算率等于标签率(
Dataset A为 1%,Dataset B为 2.5%)时,TraStrainer在两个数据集上的比例均超过 0.9,而其他基线均保持在 0.55 以下。这表明TraStrainer不仅偏好异常追踪,而且在异常追踪中对问题相关追踪表现出更强的偏好。
6.1.1.2. 代表性采样 (Representative Sampling)
-
采样结果的多样性 (
Diversity of the sampling result): 以下是原文 Table 2 的结果:Sampling Approach Dataset A (Diversity) Dataset B (Diversity) Budget Rate 0.1% 1.0% 2.5% 5.0% 10.0% 0.1% 1.0% 2.5% 5.0% 10.0% Random 18 26 31 32 32 5 7 7 8 8 HC 24 27 29 30 30 6 7 7 7 8 Sifter 25 29 30 31 31 7 7 7 8 8 Sieve 29 32 33 34 34 8 8 8 8 8 TraStrainer w/o M 30 33 34 35 35 8 8 8 8 8 TraStrainer w/o D 15 19 22 24 25 4 5 5 6 6 TraStrainer 28 31 32 33 33 8 8 8 8 8 TraStrainer w/o M(仅多样性偏置) 在两个数据集上均达到最佳多样性性能,这表明TraStrainer的基于指标的追踪编码在区分不同追踪模式和确保公平采样方面是有效的。Sieve紧随其后,因为它在编码时考虑了结构和延迟。TraStrainer的多样性略低于前两者(平均低于TraStrainer w/o M5%),因为它也考虑了问题相关追踪的偏好。HC和Sifter由于缺乏对延迟的考虑,其多样性显著低于前三种方法。TraStrainer w/o D(仅系统偏置) 的多样性表现没有明确模式,通常较低,因为它不考虑多样性偏好。
-
代表性能力 (
Representative ability): 论文选择Dataset A和Dataset B中的一个批次进行分析。在Dataset A中,追踪包含 8 种不同的高级 API 调用,分布不均,其中API-4和API-8被认为是异常接口。在Dataset B中,追踪包含 5 种不同的高级 API 调用,其中API-4被认为是异常接口。下图(原文 Figure 9)展示了采样结果中不同 API 的分布比例。
该图像是图表,展示了论文中不同方法在两个数据集上对多个API采样结果的分布情况,其中API-4和API-8为异常API,TraStrainer在异常API采样比例上显著高于其他方法,表格部分展示了不同采样率下各方法的性能指标。Fig. 9. Distribution of different APls in the sampling results
TraStrainer增强了低频 API 的代表性,从而实现了更均衡的采样。- 考虑到系统状态,
TraStrainer也改进了与系统问题相关且性能恶化的 API 的代表性。 - 相比之下,
HC和Sifter仅略微增加了低频 API 的代表性。 Sieve实现了均衡的采样结果,但未能增强恶化 API 的代表性。
6.1.2. RQ2: TraStrainer 对下游根因分析的有效性
根因分析 (RCA) 是典型的下游分析任务。论文评估了采样策略对 RCA 方法有效性的影响。使用采样方法获得的追踪作为 RCA 方法的输入,并在两个数据集上进行了实验。实验在 0.1%、1.0% 和 2.5% 的预算采样率下进行。
以下是原文 Table 3 的结果:
| RCA Approach | Sampling Approach | A@1 | A@3 | MRR | ||||||
| 0.1% | 1.0% | 2.5% | 0.1% | 1.0% | 2.5% | 0.1% | 1.0% | 2.5% | ||
| TraceAnomaly | Random | 10.71 | 9.26 | 16.67 | 44.73 | 57.41 | 57.41 | 0.2820 | 0.3503 | 0.3997 |
| HC | 9.26 | 12.96 | 18.52 | 37.04 | 42.59 | 55.56 | 0.2590 | 0.3664 | 0.3747 | |
| Sifter | 11.67 | 24.07 | 16.67 | 37.04 | 57.41 | 62.96 | 0.2753 | 0.4025 | 0.4145 | |
| Sieve | 8.81 | 18.52 | 29.63 | 44.44 | 53.70 | 57.41 | 0.2620 | 0.3762 | 0.4383 | |
| TraStrainer w/o M | 11.67 | 20.37 | 22.22 | 45.15 | 51.85 | 55.56 | 0.2903 | 0.3722 | 0.4068 | |
| TraStrainer w/o D | 12.96 | 38.89 | 44.44 | 49.81 | 77.78 | 75.93 | 0.3485 | 0.5948 | 0.6247 | |
| TraStrainer | 46.30 | 51.61 | 54.84 | 66.67 | 79.19 | 87.10 | 0.5707 | 0.6438 | 0.7151 | |
| TraceRCA | Random | 7.41 | 20.37 | 29.63 | 40.74 | 61.11 | 68.52 | 0.2525 | 0.4123 | 0.4991 |
| HC | 9.26 | 24.07 | 24.07 | 46.30 | 62.96 | 62.96 | 0.2546 | 0.4324 | 0.4627 | |
| Sifter | 8.67 | 19.63 | 25.19 | 37.04 | 55.56 | 61.11 | 0.2449 | 0.4272 | 0.4836 | |
| Sieve | 18.52 | 31.48 | 38.89 | 42.59 | 51.85 | 57.41 | 0.3008 | 0.4157 | 0.4873 | |
| TraStrainer w/o M | 18.52 | 33.33 | 35.19 | 44.44 | 55.56 | 55.56 | 0.3191 | 0.4432 | 0.4642 | |
| TraStrainer w/o D | 24.07 | 55.56 | 55.56 | 38.89 | 81.48 | 77.78 | 0.3650 | 0.6880 | 0.6843 | |
| TraStrainer | 55.56 | 55.56 | 58.06 | 70.37 | 85.19 | 89.63 | 0.6265 | 0.7019 | 0.7510 | |
| MicroRank | Random | 5.56 | 16.67 | 27.78 | 20.37 | 50.00 | 61.11 | 0.1571 | 0.3423 | 0.4352 |
| HC | 7.41 | 18.52 | 22.22 | 27.78 | 46.30 | 51.85 | 0.1954 | 0.3398 | 0.3731 | |
| Sifter | 5.56 | 18.52 | 27.78 | 23.42 | 46.30 | 61.11 | 0.1605 | 0.3414 | 0.4358 | |
| Sieve | 9.26 | 25.83 | 35.19 | 20.37 | 58.15 | 62.96 | 0.1657 | 0.4246 | 0.4963 | |
| TraStrainer w/o M | 12.96 | 16.67 | 24.07 | 42.59 | 42.59 | 55.56 | 0.2994 | 0.3241 | 0.4012 | |
| TraStrainer w/o D | 29.63 | 42.59 | 46.30 | 74.04 | 68.52 | 72.22 | 0.5228 | 0.5463 | 0.5509 | |
| TraStrainer | 42.59 | 45.16 | 50.00 | 77.74 | 78.52 | 82.26 | 0.5509 | 0.5889 | 0.6556 | |
-
总体观察: 采用
TraStrainer作为采样策略的变体在所有RCA方法(TraceAnomaly、TraceRCA和MicroRank)上,无论是在A@1、A@3还是MRR方面,都取得了最佳结果。 -
针对
TraceAnomaly:TraStrainer-based 方法显著提升了A@1(33.78%),A@3(26.88%) 和MRR(31.45%)。TraceAnomaly使用基于VAE的模型进行异常检测和根因定位,其性能高度依赖于用于训练的追踪数据的质量。- 在低预算下,基线方法
HC、Sifter和Sieve的变体表现不佳,甚至略逊于基于随机采样的方法。这可能是因为这些基线主要获取异常追踪,导致VAE模型难以有效学习正常追踪模式,从而阻碍了准确的根因定位。 TraStrainer不仅关注异常追踪,还关注问题相关追踪,因此在较低采样预算下也能获得更好的结果。- 随着采样预算的增加,所有变体的性能都有所提升。然而,基线的
A@1始终低于 30%,而TraStrainer实现了 54.84% 的A@1和 0.7151 的MRR。
-
针对
TraceRCA和MicroRank:- 这两种方法都采用频谱分析 (spectrum analysis),这意味着具有更多异常追踪和更少正常追踪的微服务更有可能是根因。
TraStrainer-based 方法分别提升了A@1(31.48%),A@3(38.34%) 和MRR(28.96%)。HC和Sifter的变体在不同预算下的分析结果与随机采样方法相似。这是因为TraceRCA和MicroRank仅根据延迟确定异常调用,而HC和Sifter在编码时仅考虑追踪结构,因此对根因分析没有帮助。- 基于
Sieve的方法在较低预算下表现不佳,因为频谱分析需要结合正常和异常追踪的线索来定位根因,而Sieve未能提供足够数量的正常追踪。 TraStrainer在不同预算下始终保持良好的分析结果,例如A@3始终高于 70%。这归因于TraStrainer更全面的采样偏好。即使在较低预算下,它也能丢弃与问题无关的追踪,而不是对分析有价值的追踪,从而实现了可接受的分析性能。
6.1.3. RQ3: 系统状态和追踪多样性结合的贡献
论文进行了消融实验,以检验在采样偏好设置中结合系统状态和追踪多样性的影响。创建了 TraStrainer w/o M (仅多样性偏置) 和 TraStrainer w/o D (仅系统状态偏置) 两个变体。
下图(原文 Figure 10)展示了 Dataset B 中不同变体采样的 API 分布。
该图像是一个柱状图,展示了图10中不同算法变体采样结果中各API分布比例。图中对比了Random、TraStrainer不同去除策略和完整版本对五个API的采样占比,体现了各方法对有问题API-4的重视程度差异。
Fig. 10. Distribution of different APls in the sampling results of different variants.
-
API 分布:
TraStrainer w/o D的采样结果在不同 API 的分布比例上表现出显著不平衡。例如,性能恶化的接口API-4的分布比例超过 70%,而代表性不足的API-5在样本中完全缺失。这表明仅凭系统状态偏好无法保证采样数据的全面性。TraStrainer w/o M平均而言能产生相对均衡的采样结果,但它未能偏向更关键的恶化接口API-4。TraStrainer(完整版) 不仅增强了采样结果的多样性,而且对问题 API 表现出更强的偏好,实现了更好的平衡和针对性。
-
对下游分析的影响 (参见
Table 3):TraStrainer w/o D(仅系统状态偏置) 总体上优于TraStrainer w/o M(仅多样性偏置),这表明相比于仅关注异常追踪,优先采样问题相关追踪对分析任务更有利。- 在低预算(0.1%)下,
TraStrainer w/o D的A@1显著低于TraStrainer完整版。这可能是因为TraStrainer w/o D的采样偏好完全基于问题相关性,而不偏向于异常的边缘案例追踪,因此在低预算下可能错失一些关键的根因追踪。 - 在高预算(2.5%)下,
TraStrainer w/o D的性能接近TraStrainer完整版。这是因为它在预算充足时能够捕获大部分问题相关追踪,包括那些导致问题的关键追踪。 TraStrainer(完整版),由于同时考虑了系统状态和追踪多样性,在所有预算下都实现了最佳的分析性能。这一发现进一步证实了结合系统状态和追踪多样性来增强追踪采样有效性的动机。
6.1.4. RQ4: TraStrainer 的效率
论文通过一系列实验评估了 TraStrainer 的效率。System-Bias Extractor 和 Trace Sampler 并行运行,且 Trace Sampler 只需读取当前的偏好向量。实验部署了 TraStrainer 的采样器部分,测量了每个追踪经过 TraStrainer 并做出采样决策的平均时间。
下图(原文 Figure 11)展示了 TraStrainer 的效率验证。
该图像是图11,展示了TraStrainer框架在不同采样方法下的效率验证。图(a)对比了TraStrainer与Sifter和Sieve在采样延迟上的累积分布函数(CDF)表现;图(b)和(c)分别展示了采样延迟对Trace跨度数和指标数的敏感性分析。
Fig. 11. Efficiency Validation of TraStrainer.
-
采样延迟分布 (Figure 11(a)):
TraStrainer通常表现出比基线方法更小的采样延迟,范围在 0.28ms 到 14.29ms 之间。- 其最大延迟比基线方法低 40.82% 到 50.16%。
-
影响因素分析: 论文分析了追踪大小 (trace size) 和指标数量 (number of metrics) 对
TraStrainer采样延迟的影响。- 追踪大小 (Figure 11(b)): 在调查追踪大小的影响时,指标数量固定为 75。
- 采样延迟随追踪大小呈线性增长。
- 然而,最大值仍保持在 15ms 以下。
- 指标数量 (Figure 11(c)): 在检查指标数量的影响时,追踪大小固定为 50。
- 当指标数量较低时,采样延迟也呈线性增长。
- 但当指标数量超过 100 时,采样延迟的增长速度显著变慢。这是因为
TraStrainer采用了维度缩减策略 (dimension reduction strategies) 来防止维度爆炸 (dimension explosion)。
- 追踪大小 (Figure 11(b)): 在调查追踪大小的影响时,指标数量固定为 75。
-
效率结论:
- 从上述分析可以看出,
TraStrainer足够高效,适用于在线采样。 - 此外,
TraStrainer的维度缩减策略在存在大量指标时能有效提高效率。
- 从上述分析可以看出,
6.2. 数据呈现 (表格)
本部分已在 5.1. 数据集 和 6.1.2. RQ2: TraStrainer 对下游根因分析的有效性 中完整呈现了原文的 Table 1 和 Table 3。
6.3. 消融实验/参数分析
消融实验已在 6.1.3. RQ3: 系统状态和追踪多样性结合的贡献 中通过 TraStrainer w/o M 和 TraStrainer w/o D 两个变体进行了详细分析,验证了结合系统状态和追踪多样性对模型有效性的贡献。
7. 总结与思考
7.1. 结论总结
本研究提出了 TraStrainer,一个创新的在线偏置采样器,它通过更全面地考虑采样偏好来优化分布式追踪数据的收集。TraStrainer 的核心思想是动态结合系统运行时状态和追踪多样性。它采用了一种可解释且自动化的方法将追踪编码为向量,并通过一个动态投票机制来集成系统偏置和多样性偏置的采样决策。通过在两个数据集上进行的全面评估,实验结果证明 TraStrainer 相比于四种基线方法,在相同预算下能识别更多有价值的追踪,并显著提升下游根因分析任务的性能(平均 Top-1 RCA 准确率提升 32.63%)。此外,TraStrainer 在效率上也优于其他两种在线偏置采样方法,展现了其在实际生产环境中的应用潜力。
7.2. 局限性与未来工作
7.2.1. 局限性
- 采样方式的局限: 本文仅以尾部采样 (tail-based sampling) 的方式实现了偏置采样。虽然这能有效利用完整的追踪信息,但尾部采样通常需要较高的中间存储和处理开销。
- 故障类型覆盖有限: 尽管使用了来自 13 个生产微服务系统和两个开源基准的数据进行验证,但测试的故障类型总数仍然有限(总共 7 种)。在更复杂、多样化的微服务系统中,可能存在更复杂的故障模式,
TraStrainer的有效性需要进一步的测试和验证。
7.2.2. 未来工作
- 与其他采样范式的结合: 作者指出,
TraStrainer提出的更有效的采样偏好设置方法可以应用于各种类型的偏置采样,而不仅仅是尾部采样。特别是,可以将其与最近研究提出的追溯采样 (retroactive sampling) 结合,后者通过延迟检索追踪数据以在追踪生命周期的早期阶段执行偏置采样,从而提高效率。将TraStrainer的情境感知偏好应用于追溯采样,有望在保证采样质量的同时,进一步优化采样效率。
7.3. 个人启发与批判
7.3.1. 个人启发
- 多模态融合的强大潜力: 本文最大的启发在于突破了传统追踪采样仅依赖追踪数据本身的局限,创新性地将系统运行时指标这一外部上下文信息引入采样决策。这使得采样决策更加“情境感知”,能够捕捉到在特定系统状态下才变得有价值的“普通”追踪。这种多模态信息融合的思路对于其他可观测性数据分析任务(如异常检测、性能预测)也具有重要的借鉴意义。
- “价值”的动态定义: 论文深刻揭示了追踪“价值”的动态性。一个追踪的“价值”并非一成不变,而是会随着系统整体健康状况的变化而变化。
TraStrainer的贡献在于提供了一种机制,能够根据实时系统状态动态调整对追踪价值的评估,这在高度动态的微服务环境中尤为重要。 - 对下游任务的直接效益: 明确将采样目标与下游根因分析任务的效果挂钩,并通过实验验证了采样质量对
RCA性能的显著影响。这提醒我们,在设计监控系统组件时,应始终考虑其对整个可观测性链路的端到端影响。 - 工程实践考量:
TraStrainer在设计时兼顾了可解释性、自动化和效率,这对于实际生产环境中的落地至关重要。例如,可解释的追踪编码和维度缩减策略都体现了良好的工程实践。
7.3.2. 批判与改进空间
DLinear模型在复杂场景的鲁棒性: 尽管作者解释了选择DLinear算法是出于在线处理的低延迟需求,但DLinear作为一种线性预测模型,在面对高度非线性、多周期性、突发性强或具有复杂季节性模式的生产系统指标时,其预测准确性和异常检测能力可能存在局限。未来的工作可以探索如何在保持效率的前提下,引入更复杂的时序模型(如轻量级Transformer变体或混合模型),以提高系统偏置提取的精度和鲁棒性。- 采样策略的灵敏度与稳定性:
Composite Sampler中的动态投票机制(AND门和OR门)依赖于当前采样频率 和预算采样率 的比较。在系统状态剧烈波动时, 的快速变化可能导致采样策略频繁切换,这是否会引入不稳定性?例如,在故障初期 导致OR门放宽采样,但随着故障扩大 立即切换到AND门严格采样,这种切换的粒度和滞后性可能影响对关键信息的捕获。可以考虑引入平滑机制或基于置信度的切换策略。 Jaccard相似度在追踪多样性中的局限性:Diversity-Biased Sampler使用Jaccard相似度来衡量追踪的多样性。Jaccard相似度主要适用于集合的比较,对于Trace Encoder生成的结构和状态融合的向量表示,尤其是连续特征,其度量能力可能不如余弦相似度或欧氏距离等。探索更适合高维、混合类型特征的相似度度量,可能会进一步提升多样性偏置采样的效果。- 可配置性和 SRE 干预:
TraStrainer的设计相对自动化,但在实际生产环境中,SRE 可能需要根据业务优先级、系统特性或特定故障场景,对采样偏好进行更精细的调整(例如,对特定服务或指标赋予更高权重)。框架中目前缺乏直接暴露给用户进行这种精细化配置的接口。未来的工作可以考虑引入用户可配置的权重或规则引擎,以增强其在多样化生产环境中的适应性。 - 外部验证的广度: 尽管数据集具有代表性,但 7 种故障类型对于一个通用的采样框架而言仍相对有限。在更广泛的故障模式(如资源泄漏、死锁、分布式事务失败等)和更复杂的微服务拓扑结构下,
TraStrainer的性能仍需进一步验证。
相似论文推荐
基于向量语义检索推荐的相关论文。