Cross-System Categorization of Abnormal Traces in Microservice-Based Systems via Meta-Learning
TL;DR 精炼摘要
本文提出TraFaultDia框架,利用元学习在微服务系统中实现异常调用链的少样本自动分类,准确识别故障类别及根因。该方法在两个开源微服务数据集上验证,提升了跨系统故障诊断的自动化和适应性。
摘要
Microservice-based systems (MSS) may fail with various fault types. While existing AIOps methods excel at detecting abnormal traces and locating the responsible service(s), human efforts are still required for diagnosing specific fault types and failure causes.This paper presents TraFaultDia, a novel AIOps framework to automatically classify abnormal traces into fault categories for MSS. We treat the classification process as a series of multi-class classification tasks, where each task represents an attempt to classify abnormal traces into specific fault categories for a MSS. TraFaultDia leverages meta-learning to train on several abnormal trace classification tasks with a few labeled instances from a MSS, enabling quick adaptation to new, unseen abnormal trace classification tasks with a few labeled instances across MSS. TraFaultDia's use cases are scalable depending on how fault categories are built from anomalies within MSS. We evaluated TraFaultDia on two MSS, TrainTicket and OnlineBoutique, with open datasets where each fault category is linked to faulty system components (service/pod) and a root cause. TraFaultDia automatically classifies abnormal traces into these fault categories, thus enabling the automatic identification of faulty system components and root causes without manual analysis. TraFaultDia achieves 93.26% and 85.20% accuracy on 50 new classification tasks for TrainTicket and OnlineBoutique, respectively, when trained within the same MSS with 10 labeled instances per category. In the cross-system context, when TraFaultDia is applied to a MSS different from the one it is trained on, TraFaultDia gets an average accuracy of 92.19% and 84.77% for the same set of 50 new, unseen abnormal trace classification tasks of the respective systems, also with 10 labeled instances provided for each fault category per task in each system.
思维导图
论文精读
中文精读
1. 论文基本信息
1.1. 标题
跨微服务系统异常调用链的元学习分类 (Cross-System Categorization of Abnormal Traces in Microservice-Based Systems via Meta-Learning)
1.2. 作者
- YUQING WANG (University of Helsinki, Finland)
- MIKA V. MANTYLA (University of Helsinki, Finland and University of Oulu, Finland)
- SERGE DEMEYER (University of Antwerp, Belgium)
- MUTLU BEYAZIT (University of Antwerp, Belgium)
- JOANNA KISAAKYE (University of Antwerp, Belgium)
- JESSE NYSSOLA (University of Helsinki, Finland)
1.3. 发表期刊/会议
该论文在 Proc. ACM Softw. Eng. 2, FSE, Article FSE027 (July 2025) 发表,并于 2024 年 3 月 27 日作为预印本在 arXiv 发布。ACM FSE (ACM SIGSOFT Symposium on the Foundations of Software Engineering) 是软件工程领域顶级的会议之一,享有极高的声誉和影响力,专注于软件工程的基础研究、工具和应用。
1.4. 发表年份
2025年 (正式发表年份),预印本发布于 2024年。
1.5. 摘要
微服务系统 (MSS) 可能会因其复杂和动态的特性而出现各种故障类型。尽管现有的 AIOps (Artificial Intelligence for IT Operations) 方法在检测异常调用链 (abnormal traces) 和定位负责的服务方面表现出色,但诊断具体故障类型和故障原因仍需要人工干预。本文提出了 TraFaultDia,一种新颖的 AIOps 框架,用于自动将微服务系统中的异常调用链分类到具体的故障类别 (fault categories)。作者将分类过程视为一系列多类分类任务,其中每个任务代表着尝试将微服务系统中的异常调用链分类到特定故障类别。TraFaultDia 利用元学习 (meta-learning) 在微服务系统中的少量带标签实例的多个异常调用链分类任务上进行训练,从而能够快速适应新的、未见的跨微服务系统的少量带标签实例的异常调用链分类任务。TraFaultDia 的使用场景可以根据微服务系统内异常构建故障类别的方式进行扩展。作者在两个微服务系统 TrainTicket 和 OnlineBoutique 的开放数据集上评估了 TraFaultDia,这些数据集中每个故障类别都与故障系统组件(服务/Pod)和根本原因相关联。TraFaultDia 自动将异常调用链分类到这些故障类别中,从而无需手动分析即可自动识别故障系统组件和根本原因。在同一微服务系统内,当每个类别提供 10 个带标签实例时,TraFaultDia 在 TrainTicket 和 OnlineBoutique 的 50 个新分类任务上分别达到了 93.26% 和 85.20% 的准确率。在跨系统场景中,当 TraFaultDia 应用于与训练时不同的微服务系统时,对于相同的 50 个新的、未见的异常调用链分类任务,TraFaultDia 在每个系统中每个故障类别提供 10 个带标签实例的情况下,分别获得了 92.19% 和 84.77% 的平均准确率。
1.6. 原文链接
https://arxiv.org/abs/2403.18998
1.7. PDF 链接
https://arxiv.org/pdf/2403.18998v4.pdf
2. 整体概括
2.1. 研究背景与动机
2.1.1. 论文试图解决的核心问题
微服务系统 (MSS) 因其固有的复杂性和动态性,使得故障诊断成为一项艰巨的任务。尽管现有的 AIOps (Artificial Intelligence for IT Operations) 方法在自动化检测异常调用链 (abnormal traces) 和定位可能存在故障的服务方面已取得显著进展,但要进一步诊断出具体的故障类型 (specific fault types) 和根本原因 (failure causes),仍然需要大量的人工介入。尤其当异常并非直接来源于特定服务时,AIOps 工具提供的潜在故障服务列表不足以直接 pinpoint 根本原因。这导致了手动 RCA (Root Cause Analysis) 成为瓶颈,耗费大量人力,并可能延误故障解决,增加停机时间和运营成本。
2.1.2. 为什么这个问题在当前领域是重要的?现有研究存在哪些具体的挑战或空白?
随着微服务系统规模和复杂性的不断增长,调用链数据量和故障案例急剧膨胀,使得运维人员难以高效地对大量检测到的异常调用链进行 RCA。缺乏自动化的故障类型分类机制,导致:
-
效率低下: 运维人员需深入理解系统架构、操作行为和故障模式,才能分析和分类异常。
-
诊断不精确: 现有方法通常只能定位到“服务”或“代码区域”,但无法直接指出“是什么类型的故障”以及“为什么会发生”。例如,配置错误、第三方库故障或高负载可能导致一系列服务故障,但仅凭服务定位难以诊断。
-
扩展性差: 针对每个新出现的故障类型进行手动分析和分类,随着系统演进,成本迅速增加。
本文指出了异常调用链分类在跨微服务系统场景中面临的三个具体挑战:
-
C1. 微服务系统异构性 (MSS heterogeneity): 不同的微服务系统由不同的服务组成,具有独特的行为模式,这使得开发一个适用于所有微服务系统的通用调用链表示和分类方法变得困难。
-
C2. 高维、多模态的调用链相关数据 (High dimensional, multi-modal trace-related data): 调用链数据包含文本(如调用组件、路径、日志消息)、时间(如 Span 起止时间)和身份信息(如 Trace ID、Span ID)等多种模态,且维度高、数量庞大。如何有效地融合和压缩这些数据以进行高效分析是一个难题。
-
C3. 故障类别中异常调用链分布不均衡 (Imbalanced abnormal trace distribution in fault categories): 某些故障类别可能只有极少数的异常调用链样本,而另一些则有数千个。这种数据不平衡性对分类模型的训练和评估构成了挑战,需要模型具备从少量样本中学习的能力。
2.1.3. 这篇论文的切入点或创新思路是什么?
论文的创新思路在于将异常调用链的故障诊断问题转化为多类分类任务,并采用元学习 (meta-learning) 策略来解决上述挑战。具体切入点包括:
- 自动化故障类别分类: 提出
TraFaultDia框架,直接将异常调用链分类到预定义的故障类别,从而自动识别故障组件和根本原因,取代人工分析。 - 多模态数据融合: 设计
AttenAE(Multi-Head Attention Autoencoder) 来无监督地融合高维、多模态的调用链数据(包括 Span 和 Log 的各种属性),生成压缩且有效的调用链表示。 - 元学习实现快速适应: 采用
TEMAML(Transformer-Encoder based Model-Agnostic Meta-Learning) 模型,使其具备少样本学习 (few-shot learning) 能力,以处理不平衡数据(C3),并实现跨系统适应性 (cross-system adaptability),以应对微服务系统异构性(C1)。这意味着模型可以在一个微服务系统上训练后,仅用少量标签数据就能快速适应另一个新系统或新故障类别。
2.2. 核心贡献/主要发现
2.2.1. 论文最主要的贡献
- 提出了
TraFaultDia框架: 一个新颖的AIOps框架,能够自动将微服务系统中的异常调用链分类到特定的故障类别,从而实现无需人工分析的自动故障组件和根本原因识别。该框架只需目标微服务系统中的少量带标签异常调用链实例即可高效工作。 - 创新的多模态数据融合机制: 提出了一种无监督方法,通过
AttenAE模型将高维、多模态的调用链相关数据(包括 Span 和 Log 的文本、时间、身份属性)融合为统一、压缩且有效的调用链表示,从而促进高效的调用链分析。 - 强大的元学习能力:
TraFaultDia采用TEMAML,使其具备在少样本 (few-shot) 条件下进行跨系统 (cross-system) 和系统内 (within-system) 故障分类的强大适应性,有效解决了微服务系统异构性、数据高维多模态以及故障类别样本不均衡等关键挑战。 - 全面的实验评估: 在两个具有代表性的基准微服务系统
TrainTicket和OnlineBoutique的开放数据集上进行了广泛评估,验证了该方法的有效性和效率。
2.2.2. 论文得出了哪些关键的结论或发现?
- 出色的系统内适应性 (Within-system adaptability): 在 50 个新的、未见的分类任务上,
TraFaultDia在TrainTicket和OnlineBoutique系统内训练并分别以 10 个带标签实例进行适应后,平均准确率分别达到 93.26% 和 85.20%。 - 显著的跨系统适应性 (Cross-system adaptability): 即使在与训练系统不同的微服务系统上应用,
TraFaultDia仍能保持高准确率。在跨系统场景中,提供 10 个带标签实例后,TraFaultDia在TrainTicket和OnlineBoutique上分别实现了 92.19% 和 84.77% 的平均准确率。 - 多模态数据融合的重要性:
AttenAE在构建有效调用链表示方面贡献最大,其性能显著优于仅使用Span数据的方法( 的准确率通常低约 10%)。这表明融合Log数据对于全面的故障分类至关重要。 - 元学习的效率优势:
TEMAML及其相关的MAML方法在测试阶段(适应新任务)比传统的K-Nearest Neighbor方法()快 4-11 倍,凸显了元学习在动态微服务环境中快速适应新故障的效率优势。 - 元训练任务数量的影响: 消融研究表明,增加元训练任务的数量(从 2 到 4)可以提高模型的鲁棒性和在新任务上的平均准确率,符合
MAML作为多任务学习算法的特性。
3. 预备知识与相关工作
3.1. 基础概念
为了帮助初学者理解 TraFaultDia 框架及其工作原理,本节将详细介绍论文中涉及的关键技术概念和术语。
3.1.1. 微服务系统 (Microservice-Based Systems, MSS)
微服务系统是一种软件架构风格,其中应用程序被构建为一组松耦合、可独立部署的服务。每个服务都专注于一个特定的业务功能,并通过轻量级机制(如 HTTP API)进行通信。
- 特点: 独立性、自治性、分布式、弹性、可扩展性。
- 挑战: 由于服务数量众多、交互复杂、动态性高,故障定位和根本原因分析变得非常困难。
3.1.2. 调用链 (Traces)、Span (Span) 和日志 (Logs)
这些是理解微服务系统运行时行为的关键观测数据。
- 调用链 (Traces): 在分布式系统中,一个用户请求可能横跨多个服务,产生一系列的交互。调用链就是对这个请求端到端执行路径的记录,它展示了请求在不同服务间流动的完整过程。一个调用链通常由一个或多个
Span组成,形成一个有向无环图 (DAG) 或树形结构。 - Span (Span): 调用链中的一个基本单元,代表了请求在某个服务内执行的单个操作。每个
Span都有一个唯一的Span ID,并记录了该操作的名称、开始时间、结束时间、服务名称、操作持续时间、以及指向父Span的Span ID(除了根Span) 等信息。Span之间通过父子关系构建出调用链的层级结构。- 属性:
- 文本属性:
call component(调用组件,表示系统涉及的部分) 和path(调用路径,请求经过的路由)。 - 时间属性:
span start time(Span 开始时间) 和span end time(Span 结束时间),反映操作的持续时间。 - 身份属性:
trace ID(调用链 ID,标识所属调用链) 和span ID(Span ID,标识自身)。Span ID具有层级结构,反映父子关系。
- 文本属性:
- 属性:
- 日志 (Logs): 在服务执行过程中,为了记录系统状态、事件或错误而生成的消息。日志通常包含时间戳、消息内容、服务名、严重级别等信息。在微服务环境中,日志是诊断问题的重要信息来源。
- 属性:
- 文本属性:
log component(日志组件,生成日志消息的系统部分),log message(日志消息内容),severity level(严重级别,如INFO、WARN、ERROR)。 - 身份属性:
trace ID(调用链 ID,关联到相应的调用链) 和span ID(Span ID,关联到生成该日志的Span)。
- 文本属性:
- 属性:
3.1.3. AIOps (Artificial Intelligence for IT Operations)
AIOps 是一种结合人工智能(尤其是机器学习)和大数据技术来自动化和优化 IT 运营管理的方法。它旨在通过分析大量的运维数据(如日志、指标、调用链)来自动检测异常、预测故障、定位根本原因并提供解决方案,从而减少人工干预,提高运维效率和系统可靠性。
3.1.4. 根本原因分析 (Root Cause Analysis, RCA)
RCA 是一个系统性过程,旨在识别导致问题或故障的根本原因,而不仅仅是处理其症状。在微服务系统中,RCA 意味着不仅要发现哪个服务出错了,还要找出为什么出错,例如是配置问题、代码缺陷、资源瓶颈还是外部依赖失败。
3.1.5. 元学习 (Meta-Learning) 与少样本学习 (Few-Shot Learning)
- 元学习 (Meta-Learning),又称“学会学习 (Learning to Learn)”: 一种机器学习范式,其目标是训练模型能够快速适应新任务,而不是直接解决某个特定任务。元学习模型通过在大量不同的“训练任务”上学习,来掌握如何学习的规律,从而在新任务出现时,即使只有少量数据也能快速学习和泛化。
- 少样本学习 (Few-Shot Learning): 元学习的一个重要应用场景。指模型在只有极少数(例如 K 个)带标签样本的情况下,仍然能够对新类别进行有效分类或回归的能力。这对于数据稀缺或类别不平衡的场景(如微服务故障诊断中罕见故障类别)非常重要。
- N-Way K-Shot 设置: 元学习任务的一种标准设置。其中
N-Way表示在新任务中需要区分 个不同的类别,K-Shot表示每个类别只提供 个带标签的样本作为模型的“支持集 (support set)”用于适应新任务。
3.1.6. Transformer (Transformer) 与自注意力机制 (Self-Attention)
- Transformer: 一种主要基于自注意力机制的深度学习模型架构,最初为处理序列数据(如自然语言)而设计。它彻底改变了序列建模领域,成为许多最先进模型(如
BERT、GPT)的基础。 - 自注意力机制 (Self-Attention): Transformer 的核心组件。它允许模型在处理序列中的每个元素时,都能考虑到序列中所有其他元素的重要性。通过计算查询 (Query, Q)、键 (Key, K) 和值 (Value, V) 之间的相似性,自注意力机制能够为序列中的每个元素分配一个权重,这些权重表示了其他元素对当前元素的重要性。
- 多头注意力 (Multi-Head Attention): 将自注意力机制并行地运行多次,每个“头”学习不同的注意力表示,然后将这些表示拼接起来。这有助于模型从不同的角度捕捉信息。
- 公式: 多头注意力机制的计算如论文中公式 (2) 所示:
其中:
- (Query)、 (Key)、 (Value) 分别是查询、键和值矩阵。它们是输入序列的线性变换。
- 是键向量的维度, 用于缩放点积,防止梯度过小。
- 函数将注意力分数归一化为概率分布。
- 是第 个注意力头的输出,通过对
Q, K, V进行不同的线性变换(由 参数化)后,再应用注意力函数计算得到。 - 函数将所有 个注意力头的输出拼接 (Concatenate) 起来,然后通过一个线性变换(由 参数化)得到最终的多头注意力输出。
3.1.7. 自动编码器 (Autoencoder, AE)
一种无监督神经网络模型,用于学习输入数据的有效编码(即表示)。它由两部分组成:
- 编码器 (Encoder): 将输入数据压缩成一个低维的隐空间表示 (latent representation)。
- 解码器 (Decoder): 尝试从隐空间表示中重建原始输入数据。
Autoencoder通过最小化输入数据和重建数据之间的差异来训练。在本文中,AttenAE利用注意力机制来增强编码器的特征融合能力。
3.1.8. MAML (Model-Agnostic Meta-Learning)
MAML 是一种模型无关的元学习算法,这意味着它几乎可以应用于任何使用梯度下降进行训练的模型。MAML 的核心思想是学习一组良好的模型初始参数,使得这个模型只需通过少量梯度更新就能在新任务上快速适应并表现良好。
- 内循环 (Inner Loop): 在每个特定任务上,使用少量的支持集 (support set) 数据对模型参数进行少量梯度更新,以适应当前任务。
- 外循环 (Outer Loop): 根据模型在所有任务的查询集 (query set) 上的表现,更新模型的初始参数,使得模型在所有任务上都能通过内循环快速适应。
3.2. 前人工作
论文在“相关工作 (Related work)”部分讨论了现有的调用链表示和分类方法,并指出了它们的局限性。
3.2.1. 调用链表示 (Trace Representation)
- 基于图神经网络 (GNN) 的方法: 许多研究 (例如 [Chen et al. 2023, 2022; Raeiszadeh et al. 2023; Zhang et al. 2022a,b]) 利用
GNN构建调用链图。这些图将Span建模为节点,将Span之间的交互建模为边,以反映请求在调用链中的流动。节点通常使用Span属性(如调用路径、响应时间)或Span关联的日志文本属性来详细描述。- 优点: 在检测异常调用链和定位潜在故障服务方面有效。
- 局限性:
- 计算开销大和可伸缩性问题: 对于包含数百个
Span的调用链,构建和更新GNN的计算成本非常高。在动态变化的微服务环境中,频繁更新调用链图以反映新的或变化的Span和依赖关系是计算上的负担。 - 不适用于本文场景: 论文的目标是高效适应,而
GNN的计算负担不符合这一需求。
- 计算开销大和可伸缩性问题: 对于包含数百个
- 基于序列模型的方法: 另一些异常检测研究 (例如 [Du et al. 2023; Kohyarnejadfard et al. 2022; Nedelkoski et al. 2019b]) 将调用链视为
Span序列,并使用Span属性来构建调用链表示。- 局限性: 它们完全忽略了日志 (logs) 作为调用链一部分的重要性。正如论文在 2.2 节所讨论的,日志包含关键的上下文事件信息,对于识别某些故障类别至关重要。仅仅依靠
Span序列可能导致对特定故障类型的识别无效。
- 局限性: 它们完全忽略了日志 (logs) 作为调用链一部分的重要性。正如论文在 2.2 节所讨论的,日志包含关键的上下文事件信息,对于识别某些故障类别至关重要。仅仅依靠
3.2.2. 调用链分类 (Trace Classification)
- 二分类 (Binary Classification): 大多数微服务异常检测研究 (例如 [Kohyarnejadfard et al. 2019; Kong et al. 2024; Zhang et al. 2022b]) 侧重于二分类任务,即判断调用链是“异常”还是“正常”。
- 局限性: 这与本文的目标不同。本文的目标是在已检测到的异常调用链中进行多类分类 (multi-class classification),将每个异常调用链关联到具体的故障类别,这需要更细致的方法。
- 多类分类 (Multi-Class Classification): 在微服务或类似云系统中,直接进行异常调用链多类分类的研究非常罕见。
- 相关工作:
Nedelkoski et al. [2019a]是一项相关工作。它使用卷积神经网络 (CNN) 将异常调用链分类为四种基于时间序列的故障类别(增量、均值漂移、逐渐增加、柱状)。该方法将调用链表征为Span序列,并使用Span属性“调用路径 (call path)”的时间序列数据进行分类。 - 局限性:
- 故障类别范围有限: 该方法关注的故障类别范围较窄,无法覆盖本文故障数据集中更广泛的故障类型。
- 未解决 MSS 异构性 (C1):
CNN模型难以有效应对不同微服务系统之间的异构性。 - 未充分利用多模态数据 (C2): 该方法仅考虑“调用路径”的时间序列数据,忽略了其他重要的调用链相关数据模态(如日志信息),而这些模态对于识别某些故障类别至关重要。
- 相关工作:
3.3. 技术演进
在微服务系统监控和故障诊断领域,技术演进大致经历了以下阶段:
- 早期阶段:基于日志和指标的传统监控。 主要依靠人工配置告警规则和阈值,通过查看日志和聚合指标来判断系统健康状况。故障诊断高度依赖专家经验。
- AIOps 1.0:异常检测与定位。 引入机器学习技术,实现日志异常检测、指标异常检测、以及基于调用链图的异常
Span或服务定位。这一阶段的目标是自动化“发现异常”和“找出异常可能在哪里”。 - AIOps 2.0:从定位到诊断。 随着系统复杂性增加,仅仅知道“哪里”有问题不足以高效解决问题。需要更精确地诊断“是什么”问题以及“为什么”会发生。这催生了对故障分类和根本原因分析自动化方法的需求。本文
TraFaultDia正是这一阶段的代表,旨在弥补从“定位”到“诊断”之间的鸿沟。 - 未来趋势:可解释性与自主修复。 未来的
AIOps将不仅能诊断故障,还能提供可解释的诊断结果,并进一步自动化故障的修复过程。
3.4. 差异化分析
TraFaultDia 与现有研究的主要区别和创新点体现在以下几个方面:
-
从二分类到多类分类的演进:
- 现有工作: 大多数
AIOps方法侧重于将调用链分类为“正常”或“异常”的二分类问题。 TraFaultDia: 专注于对已检测到的异常调用链进行多类分类,将其归类到具体的故障类别,从而直接识别故障组件和根本原因。这提供了一个更深层次的诊断结果。
- 现有工作: 大多数
-
全面的多模态数据融合:
- 现有工作:
GNN方法虽然考虑Span和Log,但存在计算开销和可伸缩性问题。基于序列模型的方法常忽略Log数据。 TraFaultDia: 通过AttenAE无监督地融合了Span和Log的所有关键属性(文本、时间、身份),创建了统一且压缩的调用链表示。这种方法比GNN更具可伸缩性,并避免了Span序列方法的数据模态缺失问题。
- 现有工作:
-
强大的跨系统和少样本适应性:
- 现有工作: 现有的多类分类方法(如
Nedelkoski et al. [2019a]的CNN)通常针对特定系统或有限的故障类型进行训练,难以应对微服务系统的异构性,且不具备少样本学习能力。 TraFaultDia: 引入元学习 (meta-learning) 中的MAML算法,使其具备模型无关 (model-agnostic) 的快速适应能力。这意味着TraFaultDia可以在一个系统上训练后,仅用少量标签数据就能快速适应另一个不同的微服务系统(跨系统适应性)或新的故障类别(少样本适应性),显著降低了实际应用中的数据标注和模型再训练成本。
- 现有工作: 现有的多类分类方法(如
-
高效的调用链表示:
-
现有工作:
GNN构建调用链图的计算复杂性高,且在动态微服务环境中更新成本大。 -
TraFaultDia:AttenAE生成的压缩表示避免了GNN的复杂性,无需频繁更新Span之间的依赖关系,使其在动态和复杂环境中更具可伸缩性和计算效率。综上所述,
TraFaultDia在故障诊断的精细化程度、数据利用的全面性、模型的适应性和计算效率方面,都展现出与现有方法显著的差异和创新。
-
4. 方法论
本节将详细阐述 TraFaultDia 框架的工作流程、设计理念以及其核心组件 AttenAE 和 TEMAML 的具体实现。
4.1. 方法原理
TraFaultDia 的核心思想是利用元学习 (meta-learning) 范式,使模型能够快速适应微服务系统 (MSS) 中新的或现有故障类别的少样本分类任务。为了实现这一点,框架首先通过一个特制的自动编码器 AttenAE (Multi-Head Attention Autoencoder) 将高维、多模态的调用链数据压缩成统一且有效的低维表示。随后,将这些表示作为输入,送入一个基于 Transformer 编码器的元学习模型 TEMAML (Transformer-Encoder based Model-Agnostic Meta-Learning) 进行分类。
其直觉在于:
- 有效表示: 微服务调用链数据复杂且多模态,直接使用原始数据进行分类效率低下且可能丢失关键信息。
AttenAE能够无监督地学习如何将Span和Log的多种属性(文本、时间、身份)融合并压缩到低维向量中,从而捕捉调用链的本质特征,为后续分类提供高质量输入。 - 快速适应: 实际微服务系统故障类别可能多样且样本不平衡,传统分类模型在新故障类型出现时需要大量标签数据进行重新训练。元学习允许模型学习一种“如何学习”的能力,即通过在多个分类任务上训练,模型能够学习到一套良好的初始参数。当遇到新的分类任务时,即使只有少量带标签样本,模型也能通过快速微调(少量梯度更新)来快速适应并表现出色,解决了数据稀缺和系统异构性问题。
- 泛化能力:
TEMAML结合了 Transformer 编码器的强大表征能力和MAML的快速适应特性,使其不仅能在训练过的系统内泛化,还能将学习到的知识迁移到不同的微服务系统上,实现跨系统分类。
4.2. 核心方法详解
TraFaultDia 框架包含两个主要组件:Multi-Head Attention Autoencoder (AttenAE) 和 Transformer-Encoder based Model-Agnostic Meta-Learning (TEMAML) 模型。整个框架的概览如下图 (原文 Figure 3) 所示:
该图像是图3,展示了TraFaultDia框架中AttenAE与TEMAML的交互流程。包括利用AttenAE对微服务系统异常调用链进行编码与解码,构建调用链表示,再通过TEMAML进行基于元学习的异常调用链分类,分为元训练和元测试阶段。
4.2.1. TraFaultDia 工作流与设计原理
TraFaultDia 框架的工作流程分为两个主要阶段:
-
调用链表示学习 (Phase 1: Trace Representation Learning):
- 给定一个微服务系统,
AttenAE在足够多的无标签调用链上进行无监督训练。 AttenAE的目标是学习如何将原始的调用链相关数据融合并压缩成有效表示。AttenAE由一个编码器 (encoder) 和一个解码器 (decoder) 组成:编码器负责从原始数据生成调用链表示;解码器负责从这些表示重建原始数据。AttenAE的训练目标是最小化原始数据与重建数据之间的差异(损失)。- 一旦训练完成,仅使用编码器来为该微服务系统中的新调用链生成表示。
- 给定一个微服务系统,
-
元学习分类 (Phase 2: Meta-Learning Classification):
TEMAML训练基础模型Transformer-Encoder (TE)来执行异常调用链分类任务。- 元训练阶段 (Meta-training phase):
TEMAML在来自一个微服务系统的多个异常调用链分类任务(称为元训练任务)上进行训练。这些任务也是N-Way K-Shot设置,即每个任务包含 个故障类别,每个类别有 个带标签的实例。 - 元测试阶段 (Meta-testing phase): 训练后的
TEMAML在来自任何微服务系统的新的、未见的异常调用链分类任务(称为元测试任务)上进行评估。同样是N-Way K-Shot设置。 TEMAML使用在阶段 1 优化后的AttenAE编码器来为这些任务中的异常调用链构建表示。
设计原理 (Design Rationale):
- 选择
AttenAE的原因:- 数据融合与压缩: 解决挑战
C2(高维、多模态调用链相关数据)。AttenAE作为一个自动编码器,能够将原始的高维多模态数据融合并压缩成统一、低维的表示。 - 特征集成:
AttenAE中的多头注意力机制能够识别并整合调用链相关数据中最相关的特征来构建表示。 - 无监督学习:
AttenAE支持无监督训练,这非常适合微服务系统,因为无标签的调用链数据易于获取。
- 数据融合与压缩: 解决挑战
- 选择
TEMAML的原因:TE(Transformer-Encoder) 作为基础模型: 异常调用链表示是潜在表示,是多模态数据的融合而非真正的序列。TE擅长通过自注意力机制识别和整合这些潜在表示中的重要特征,使其成为合适的分类器。MAML实现少样本和迁移学习: 解决挑战C1(MSS 异构性) 和C3(不平衡异常调用链分布)。MAML提供少样本学习 (few-shot learning) 能力,使模型能够仅用少量标签实例识别频繁和罕见的故障类别。同时,它还提供迁移学习 (transfer learning) 能力,支持系统内和跨系统的适应性,即使面对异构的微服务系统也能有效工作。
4.2.2. AttenAE 用于构建调用链表示
AttenAE 的架构如下图 (原文 Figure 4) 所示:
该图像是图4,AttenAE架构的示意图,展示了从一条跟踪的spans和日志中提取属性,并通过多头注意力机制的编码器-解码器结构进行特征投影和重构的过程。
给定一个微服务系统,AttenAE 的目标是为该系统中的调用链 构建表示,其中每个 包含一系列的 Span 和 Log。 表示所有调用链中 Span 和 Log 的组合。
4.2.2.1. Span 预处理和向量生成
对于每个 Span,论文提取了在 2.2 节中讨论的所有文本属性 (call component 和 path)、时间属性 (span start 和 end time) 以及身份属性 (trace ID 和 span ID)。
- 时间属性处理:
- 将
UNIX格式的时间属性在每个Span的上下文中进行归一化 (normalize),考虑到每个Span的独特特征和时间尺度。 - 将归一化后的时间属性连接起来,形成一个针对
Tr中Span的单一数值向量 。
- 将
- Span ID 处理:
- 抽象掉
Span ID中共享的公共前缀,仅保留层级数字 (hierarchical-level digits)。 - 例如,将
a480f2.0,a480f2.1,a480f2.2,a343mc.0,a987gq.0重新分配为1.0,1.1,1.2,2.0,3.0。 - 在调用链上下文内对
Span ID进行归一化,生成一个针对Tr中Span的向量 。
- 抽象掉
- 文本属性处理 (
call component和path):-
将文本属性
call component和path连接起来,形成一个单一属性,称为“服务操作 (service operation)”。 -
采用神经表示方法 (neural representation method),而不是基于模板的方法,以更好地处理微服务系统中不断变化的、包含大量
O0V(Out-Of-Vocabulary) 词汇的“服务操作”。 -
具体步骤如下:
- 步骤 1. 预处理: 将所有大写字母转换为小写,将特定变量(如 "Prod1234")替换为标准标识符 ("ProductID"),并移除所有非字母字符。
- 步骤 2. 分词 (Tokenization): 使用
WordPiece分词技术将“服务操作”分词为子词 (subwords)。 - 步骤 3. 神经表示: 将子词输入到预训练的
BERT基础模型中,生成每个子词的词嵌入 (word embeddings)。使用模型最后一个编码层生成的词嵌入,并通过对所有子词嵌入求平均值来计算每个“服务操作”的句嵌入 (sentence embedding)。
-
这个过程产生了一个针对
Tr中Span的服务操作的向量表示 。最终,对于
Tr,将上述阶段获得的向量表示连接 (concatenate) 起来,从而建立一个针对Span的复合向量 ,其中 表示 的向量空间维度。
-
4.2.2.2. Log 预处理和向量生成
提取日志中的文本属性 (log component, message, severity level) 和身份属性 (trace ID)。
- Log 事件处理:
- 使用
trace ID将日志收集到其所属的调用链中。 - 将文本属性连接起来,形成一个单一属性,称为“日志事件 (log event)”。
- 与“服务操作”类似,采用神经表示方法来构建“日志事件”的神经表示,跳过日志解析步骤,因为日志解析在动态变化的日志系统中可能效果有限。
- 神经表示的构建过程与
Span中的服务操作相同(预处理、分词、神经表示)。
- 使用
- 这个过程产生了一个针对
Tr中Log的向量表示 ,其中 表示 的向量空间维度。
4.2.2.3. 调用链表示构建
对于给定微服务系统,AttenAE 的编码器通过以下步骤为调用链 Tr 构建调用链表示。
-
特征空间投影: 编码器首先将输入的
Span向量 和Log向量 投影到一个公共特征空间 : 其中:- 表示激活函数 (activation function)。
- 和 分别是
Span和Log的权重矩阵。 - 和 是对应的偏置向量。
- 通过线性变换和非线性激活,将原始输入向量映射到统一的特征表示 和 。
-
多头注意力融合:
AttenAE的编码器整合了多头注意力机制(如前文 3.1.6 节中公式 (2) 所示),将 和 融合为调用链表示 。 这里,将 设置为查询 (Query, ),将 同时设置为键 (Key, ) 和值 (Value, )。这种设置反映了Span结构和服务通信作为查询,而日志提供详细的上下文事件信息作为被查询和提取的对象。
通过以上过程,对于一组调用链 ,可以生成对应的调用链表示 ,其中 对应于 。
- 解码器重建与损失函数:
AttenAE的解码器负责将调用链表示 重建回原始的Span和Log向量,有效地反转编码器的过程: 其中:-
和 是重建的
Span和Log向量。 -
是激活函数。
-
和 是对应的权重矩阵。
-
和 是偏置向量。
AttenAE的训练目标是优化其参数 (包括编码器和解码器中的所有权重和偏置),以最小化原始向量 与其重建向量 之间的总损失 。 这个损失函数是均方误差 (Mean Squared Error, MSE),最小化它意味着模型能够尽可能准确地从压缩表示中恢复原始信息。
-
4.2.3. TEMAML 用于跨微服务系统少样本异常调用链分类
TEMAML 的基本架构如下图 (原文 Figure 5) 所示:
该图像是图 5,展示了TEMAML(基于任务的元学习)学习过程的示意图,包含内循环和外循环两个阶段,通过迭代优化参数heta以实现对异常跟踪的分类。
TEMAML 训练基础模型 Transformer-Encoder (TE) (表示为 ) 来执行多类异常调用链分类。它通过两个阶段进行:元训练 (meta-training) 和元测试 (meta-testing)。
4.2.3.1. 异常调用链分类的基础模型
TEMAML 使用 TE 作为基础模型 来对异常调用链进行多类分类。其工作流如下:
- 输入:
TE接收由AttenAE构建的调用链表示 作为输入,其中 代表任务中所有异常调用链Tr的集合。 - 自注意力机制: 输入 经过
TE的自注意力机制处理。这个机制通过加权最相关的部分来捕捉每个调用链表示 内部的依赖关系,以识别每个调用链 的故障类型。该机制遵循多头注意力机制(如前文 3.1.6 节中公式 (2) 所示)。由于使用相同的输入 作为Q, K, V,因此称为“自注意力 (self-attention)”。 - 后续层: 自注意力机制的输出进一步通过一个池化层 (pooling layer) 来突出关键特征,一个Dropout 层 (dropout layer) 来防止过拟合,以及一个全连接层 (fully connected layer) 将精炼后的输出整形为适合分类的格式。
- 分类器: 最后,一个
Softmax分类器处理全连接层的输出,计算每个故障类别的概率。
4.2.3.2. 元训练 (Meta-training)
此阶段旨在训练 TE 找到鲁棒的参数,使其能够快速适应来自任何微服务系统的异常调用链分类任务。
-
任务定义:
TE在从一个微服务系统(例如TrainTicket或OnlineBoutique)中采样的多个异常调用链分类任务(元训练任务)上进行训练,记为 。- 每个元训练任务 包含一个支持集 (support set) ,其中有 个不同的故障类别,每个类别有 个带标签的调用链实例。
- 每个元训练任务 还包含一个查询集 (query set) ,其中有 个不同的故障类别,每个类别有 个带标签的调用链实例。通常 ,以确保在查询集上进行更稳健的优化。
- 和 是通过给定微服务系统的优化
AttenAE编码器构建的调用链表示。
-
双循环优化: 元训练阶段采用双循环优化过程:
-
内循环 (Inner Loop):任务级别学习
- 首先随机初始化 的参数,表示为带有参数 的 。
- 在适应每个元训练任务 时, 的参数 会被转换为任务特定的参数 ,对应于更新后的模型 。
- 是通过在 的支持集 上执行梯度下降更新计算得到的:
其中:
- 是内循环更新的学习率。
- 是在任务 的支持集 上的损失函数。
- 这一步的目标是使模型 在当前任务 的支持集上表现良好。
-
外循环 (Outer Loop):元学习级别优化
- 外循环通过优化 的初始参数 来确保 在所有任务 上都能获得最佳性能。
- 它通过最小化在所有元训练任务 的查询集 上的总损失 来更新 : 其中 是在任务 的查询集 上的损失函数。
MAML标准的外循环更新涉及计算梯度的梯度(即二阶导数),计算量很大。为了简化,论文使用一阶近似 (first-order approximation): 其中:- 是外循环更新的学习率。
- 这一步的目标是找到一个初始参数 ,使得从该 开始,经过内循环的少量更新后,模型在所有任务的查询集上都能有良好的表现。
-
-
结果: 外循环的最终结果是得到最优参数 。然后,基础模型
TE用这些最优参数 进行初始化,得到优化后的基础模型 。这个优化后的模型具有增强的适应性,能够快速适应来自任何微服务系统的新任务。
4.2.3.3. 元测试 (Meta-testing)
此阶段使用优化后的 TE () 来适应新的、未见的异常调用链分类任务(元测试任务),这些任务可以来自任何微服务系统。
- 任务配置: 每个元测试任务的配置与元训练任务相同,记为 。
- 适应: 为了适应某个特定的元测试任务 ,将 应用到其支持集 上进行微调,从而得到针对 的特定参数 ,模型变为 。
- 评估: 使用 对查询集 中的异常调用链进行分类,从而评估
TraFaultDia框架的性能。
5. 实验设置
本节将详细介绍 TraFaultDia 框架的实验设计,包括使用的数据集、评估指标、对比基线以及具体的实验配置。
5.1. 数据集
为了训练和评估 TraFaultDia 框架,论文使用了两个开放数据集:DeepTraLog [FudanSELab 2024] 和 Nezha [IntelligentDDS 2024]。这两个数据集包含了两个代表性的基准微服务系统 TrainTicket 和 OnlineBoutique 的调用链数据。
5.1.1. 数据集描述
DeepTraLog: 包含TrainTicket系统的正常调用链和跨 14 种故障类别的异常调用链。这些故障类别涵盖异步交互、多实例、配置和单体维度,旨在模拟真实世界的异常场景。Nezha: 包含TrainTicket和OnlineBoutique系统的正常调用链和异常调用链。异常调用链是由五种故障类型(CPU 争用、CPU 消耗、网络延迟、错误返回、异常代码缺陷)引起的,每种故障类型应用于系统内的不同服务 Pod。在这种情况下,每个与故障类型关联的 Pod 都代表一个独特的故障类别。
5.1.2. 故障数据集构建与特点
论文基于 DeepTraLog 和 Nezha 构建了故障数据集:
-
TrainTicket: 包含 30 个故障类别 (F1-F30) 的异常调用链。
-
OnlineBoutique: 包含 32 个故障类别 (B1-B32) 的异常调用链。
以下是原文 Table 1 总结的故障类别:
TrainTicket DeepTraLog: Asynchronous service invocations related faults (F1.Asynchronous message sequence error, F2.Unexpected order of data requests, F13.Unexpected order of price optimization steps); Multiple service instances related faults (F8.Key passing issues in requests, F11.BOM data is updated in an unexpected sequence, F12.Price status query ignores expected service outputs); Configuration faults (F3.JVM and Docker configuration mismatch, F4.SSL offloading issue, F5. High request load, F7. Overload of requests to a third-party service); Monolithic faults (F6.SQL error of a dependent service, F9.Bi-directional CSS display error, F10.API errors in BOM update, F14.Locked product incorrectly included in CPI calculation) Nezha: CPU contention on F23.travel, F25.contact, F26.food service pods; Network delay on F28.basic, F29.travel, F30.route, F27.security, F24.verification-code service pods; Message return errors on F16.basic, F15.contact, F18.food, F19.verification-code service pods; Exception code defects on F17.basic, F21.route, F22.price, F20.travel service pods. OnlineBoutique Nezha: CPU contention on B4.shipping, B14.cart, B18.currency, B19.email, B26.recommendation, B31.adservice, B9.payment, B11.frontend service pods; CPU consumption on B8.recommendation, B12.frontend, B24.productcatalog, B28.shipping, B17.checkout, B20.email, B32.adservice service pods; Network delay on B10.currency, B1.cart, B15.checkout, B22.productcatalog, B27.shipping, B21.payment, B25.recommendation, B29.adservice, B7.email service pods; Message return errors on B6.frontend, B23.productcatalog, B2.checkout, B30.adservice service pods; Exception code defects on B5.adservic, B13.frontend, B3.productcatalog, B16.checkout service pods
数据特点(原文 Table 2): 论文在故障数据集中观察到以下统计数据,揭示了调用链数据的复杂性和挑战:
以下是原文 Table 2 的结果:
| TrainTicket | Mean | Min | Max |
| Unique traces per | |||
| fault category: | 1196 | 26 | 2546 |
| Spans per trace: | 79 | 1 | 345 |
| Logs per trace: | 44 | 1 | 340 |
| OnlineBoutique | Mean | Min | Max |
| Unique traces per | |||
| fault category: | 443 | 32 | 1018 |
| Spans per trace: | 53 | 1 | 190 |
| Logs per trace: | 51 | 4 | 184 |
- 挑战 C1 (MSS 异构性):
TrainTicket包含 45 个服务,而OnlineBoutique有 12 个服务。它们不同的系统性质和服务组成导致了不同的系统行为。 - 挑战 C2 (高维、多模态数据): 每个调用链的
Span和Log数量差异很大(1 到数百个)。Span包含文本、时间、身份属性;Log包含文本、身份属性。缺失任何模态都会影响识别某些故障类别。 - 挑战 C3 (不平衡分布): 某些故障类别只有约 30 个实例,而另一些则有数千个,这导致了严重的类别不平衡。
5.1.3. 训练与评估数据划分
AttenAE训练数据: 从每个微服务系统 (TrainTicket/OnlineBoutique) 中随机选择 3960 个无标签调用链 (3360 用于训练,570 用于验证) 来训练AttenAE,用于构建调用链表示。这些数据不与故障数据集重叠,且正常调用链数量远多于异常调用链,以反映实际情况。TEMAML训练与评估数据:- 故障类别划分:
TrainTicket的 30 个故障类别被划分为 20 个基础故障类别 (base fault categories) 和 10 个新颖故障类别 (novel fault categories)。OnlineBoutique的 32 个故障类别被划分为 22 个基础故障类别和 10 个新颖故障类别。- 基础和新颖故障类别的组成包含随机混合的故障类型,确保不同
Span和Log数量的调用链都能被代表。
- 元学习任务设置 (
N-Way K-Shot):- 元训练任务: 每个系统随机生成 4 个元训练任务,使用其基础故障类别。配置为 5-way 5-shot。即每个任务包含 5 个故障类别,每个类别有 5 个带标签实例作为支持集。
- 元测试任务: 每个系统随机生成 50 个元测试任务,使用其新颖故障类别。配置为 5-way 10-shot。即每个任务包含 5 个故障类别,每个类别有 10 个带标签实例作为支持集。
- 查询集: 对于每个元训练/元测试任务,查询集包含每个故障类别 15 个调用链实例。
- 故障类别划分:
5.1.4. 实验设计 (E1-E4)
四个实验旨在评估系统内和跨系统的适应性:
- E1 (TrainTicket → TrainTicket): 在
TrainTicket的 4 个元训练任务上训练TEMAML,并在TrainTicket的 50 个元测试任务上评估。 - E2 (OnlineBoutique → OnlineBoutique): 在
OnlineBoutique的 4 个元训练任务上训练TEMAML,并在OnlineBoutique的 50 个元测试任务上评估。 - E3 (OnlineBoutique → TrainTicket): 在
OnlineBoutique的 4 个元训练任务上训练TEMAML,并在TrainTicket的 50 个元测试任务上评估。 - E4 (TrainTicket → OnlineBoutique): 在
TrainTicket的 4 个元训练任务上训练TEMAML,并在OnlineBoutique的 50 个元测试任务上评估。
5.2. 评估指标
为了评估 TraFaultDia 及其基线的有效性,论文选择了准确率 (Accuracy) 作为主要评估指标。同时,也报告了置信区间和范围,并进行了统计学检验。
5.2.1. 准确率 (Accuracy)
-
概念定义: 准确率衡量的是模型正确预测的样本数量占总样本数量的比例。在分类任务中,它表示所有预测中,模型做出正确预测的频率。
-
数学公式: 对于多类分类任务,通常简化为: 其中 是类别总数, 是第 类中正确预测的样本数。
-
符号解释:
TP(True Positives):真正例,实际为正类且被正确预测为正类的样本数。TN(True Negatives):真负例,实际为负类且被正确预测为负类的样本数。FP(False Positives):假正例,实际为负类但被错误预测为正类的样本数。FN(False Negatives):假负例,实际为正类但被错误预测为负类的样本数。- :模型正确分类的样本总数。
- :所有预测的样本总数。
-
适用性说明: 尽管在类别分布不均衡时,准确率可能不是最佳指标(例如,在二分类异常检测中,预测多数类即可获得高准确率),但在本文的 5-way 元学习设置中,准确率是合适的。因为在这种设置下,简单地预测单一类别最多只能达到 20% 的准确率,从而确保了准确率能够有效反映模型性能。
-
报告方式: 在每个实验中,对每个元测试任务进行五次试验,选择最高的准确率。报告结果时,给出 50 个元测试任务的平均准确率 (average accuracy)、95% 置信区间 (95% confidence interval, CI) 以及任务准确率的范围(最小和最大值)。
5.2.2. 统计学检验 (Statistical Tests)
- t-检验 (t-tests [Fisher 1992]): 用于统计学比较
TraFaultDia与有效基线在 50 个元测试任务上的准确率差异。- 显著性水平: 报告 值,通常 (或更严格的 ) 表示统计学上的显著差异。
- Cohen's D 值: 用于量化效应大小 (effect size)。
- 概念定义: Cohen's D 衡量两个均值之间标准差单位的差异,提供了一种标准化的方式来判断差异的实际重要性。
- 解释:
- 0.2:小效应 (small effect size)
- 0.5:中效应 (medium effect size)
- 0.8 或更高:大效应 (large effect size)
5.2.3. 效率指标 (Efficiency Metrics)
- 训练时间 (Training Time): 衡量模型在元训练任务上所需的时间。
- 测试时间 (Testing Time): 衡量模型在元测试任务上所需的时间(即适应新任务所需的时间)。
- AttenAE 训练时间: 衡量
AttenAE在无标签调用链上训练所需的时间。 - AttenAE 调用链表示构建时间: 衡量优化后的
AttenAE为元测试任务构建调用链表示所需的时间。
5.3. 对比基线 (Baselines)
鉴于缺乏直接可比的 AIOps 方法,论文通过结合不同的调用链表示和分类方法构建了多种基线,并辅以消融研究,以系统地评估 TraFaultDia 的性能及其组件的影响。所有基线均使用与 TraFaultDia 相同的神经表示方法来处理文本 Span 和 Log 属性,以确保公平比较。
5.3.1. AttenAE 替代方案 (AttenAE alternatives)
这些基线探索了不同的调用链表示构建方法。
- :仅将
Span(遵循相关工作,将调用链视为Span序列)作为输入送入TEMAML进行分类,忽略Log数据。 - :使用线性投影进行融合的简化版自动编码器 (
LinearAE),取代AttenAE,然后与TEMAML结合。 - :使用门控线性单元 (
Gated Linear Unit,GLU) 进行融合的自动编码器 (GluAE),取代AttenAE,然后与TEMAML结合。GluAE修改自Lee et al. [2023]的模态融合方法。
5.3.2. Transformer 编码器替代方案 (Transformer Encoder alternatives)
这些基线探索了 MAML 中基础模型(TE)的不同选择。
- :使用简单的线性模型作为
MAML的基础模型。 - :使用循环神经网络 (
RNN) 作为MAML的基础模型。 - :使用长短期记忆网络 (
LSTM) 作为MAML的基础模型。 - :使用卷积神经网络 (
CNN) 作为MAML的基础模型。
5.3.3. TEMAML 替代方案 (TEMAML alternatives)
这些基线探索了不同的元学习方法或传统分类模型来处理少样本分类任务。这些替代方案完全取代了 TEMAML,仅在 E1 和 E2 实验中进行评估,因为它们主要关注少样本学习而非跨系统迁移。
- :使用
Matching Network[Vinyals et al. 2016] 作为元学习方法。 - :使用
Prototypical Network[Snell et al. 2017] 作为元学习方法。 - :使用
K-Nearest Neighbor(KNN) 模型进行分类。这是一个传统的机器学习模型,用于评估在少样本情况下是否需要元学习。 - :使用决策树 (
Decision Tree) 模型进行分类。同样是传统的机器学习模型。
5.4. 实施细节
- 硬件环境: 在一台配备 32 核
CPU和一块NVIDIA Ampere A100 GPU(40 GB 显存) 的Linux服务器上进行。 - 软件环境: 使用
Python 3.10.6。 - 优化器:
AttenAE和TEMAML均使用AdamW优化器进行训练。 - 超参数: 具体的超参数设置在论文的复制包中提供。
6. 实验结果与分析
本节将深入探讨 TraFaultDia 框架在各项实验中的表现,并与基线模型进行对比分析。实验结果将从有效性、效率和消融研究三个方面进行呈现和解读。
6.1. 核心结果分析
6.1.1. 有效性 (Effectiveness)
TraFaultDia 在系统内和跨系统的所有实验设置中均展现出高平均准确率,证明了其在故障分类方面的有效性。
以下是原文 Table 3 的结果:
| Model | E1 (TrainTicket→TrainTicket) | E3 (OnlineBoutique→TrainTicket) | ||
| 5-shot | 10-shot | 5-shot | 10-shot | |
| Our TraFaultDia | 92.91±2.10 (74.67-100.0) | 93.26±1.40 (76.00-100.0) | 86.35±2.00 (70.67-100.0) | 92.19±1.99 (74.67-100.0) |
| AttenAE alternative: | ||||
| OnlySpan+TEMAML | 80.64±2.84 (57.33-97.33) | 78.77±2.80 (60.00-97.33) | 79.25±2.89 (57.33-97.33) | 80.19±3.10 (56.00-97.33) |
| Multihead attention fusion alternatives: | ||||
| LinearAE+TEMAML | 89.15±2.29 (73.33-100.0) | 90.59±2.43 (70.67-100.0) | 83.09±2.55 (62.67-97.33) | 90.61±2.01 (72.00-100.0) |
| GluAE+TEMAML | 92.21±1.73 (77.33-100.0) | 93.07±1.64 (77.33-100.0) | 85.07±2.38 (66.67-100.0) | 94.40±2.19 (72.00-100.0) |
| Transformer encoder alternatives: | ||||
| AttenAE+LinearMAML | 45.84±2.21 (25.33-61.33) | 45.36±2.16 (30.67-60.00) | 43.81±1.99 (28.00-58.67) | 43.87±1.93 (29.33-60.00) |
| AttenAE+RnnMAML | 49.65±2.09 (37.33-64.00) | 42.88±1.93 (24.00-58.67) | 48.45±1.75 (38.67-65.33) | 47.07±1.88 (34.67-58.67) |
| AttenAE+LstmMAML | 41.39±2.20 (21.33-56.00) | 42.67±1.91 (29.33-56.00) | 40.32±1.68 (22.67-52.00) | 42.29±1.79 (25.33-56.00) |
| AttenAE+CnnMAML TEMAML alternatives: | 57.06±2.85 (41.33-81.00) | 69.20±2.19 (56.00-88.00) | 49.04±1.80 (38.67-64.00) | 69.47±2.65 (48.00-89.33) |
| AttenAE+TEMatchNet | 76.56±2.80 (49.33-93.33) | 76.05±2.37 (50.67-94.67) | ||
| AttenAE+ProtoNet | 57.25±0.03 (40.00-74.67) | 59.68±0.03 (44.00-76.00) | ||
| AttenAE+NNeighbor | 88.19±0.02 (74.67-98.67) | 92.56±0.02 (78.00-100.0) | ||
| AttenAE+DTree | 66.80±0.03 (46.67-88.00) | 77.09±0.03 (54.67-96.00) | ||
以下是原文 Table 4 的结果:
| Model | E2 (OnlineBoutique→OnlineBoutique) | E4 (TrainTicket→OnlineBoutique) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5-shot | 10-shot | 5-shot | 10-shot | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Our TraFaultDia | 82.50±2.35 (65.33-98.67) | 85.20±2.33 (66.67-98.67) | 82.37±2.07 (64.00-97.33) | 84.77±2.28 (68.00-98.67) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| AttenAE alternative: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| OnlySpan+TEMAML | 72.83±2.40 (57.33-88.00) | 73.15±2.81 (46.67-92.00) | 71.81±2.25 (56.00-85.33) | 73.60±2.21 (57.33-85.33) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Multihead attention fusion alternatives: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| LinearAE+TEMAML | 76.15±2.59 (60.00-95.00) | 78.21±2.50 (64.00-96.00) | 75.81±2.45 (52.0# 1. 论文基本信息
1.1. 标题Cross-System Categorization of Abnormal Traces in Microservice-Based Systems via Meta-Learning (通过元学习对微服务系统中异常调用链进行跨系统分类) 1.2. 作者
1.3. 发表期刊/会议发表于 ACM软件工程学报 (Proc. ACM Softw. Eng.) 卷2, FSE (软件工程基础), 文章FSE027 (2025年7月)。 FSE (Foundations of Software Engineering) 是软件工程领域顶级的国际会议之一,享有极高的学术声誉和影响力。 1.4. 发表年份2025年 (根据ACM参考格式,尽管预印本发布于2024年3月)。 1.5. 摘要微服务系统 (Microservice-based Systems, MSS) 可能因各种故障类型而失效。尽管现有的 AIOps (AI for IT Operations) 方法在检测异常调用链并定位责任服务方面表现出色,但仍需要人工诊断具体的故障类型和故障原因。本文提出了 TraFaultDia,一种新颖的 AIOps 框架,用于自动将 MSS 中的异常调用链分类到故障类别中。我们将分类过程视为一系列多分类任务,其中每个任务代表尝试将 MSS 中的异常调用链分类到特定故障类别中。TraFaultDia 利用 元学习 (meta-learning) 在几个异常调用链分类任务上进行训练,每个任务仅使用 MSS 中的少量标注实例,从而能够快速适应跨 MSS 的新的、未见的异常调用链分类任务,每个任务也仅需少量标注实例。TraFaultDia 的用例可扩展,具体取决于如何从 MSS 内部的异常中构建故障类别。我们在两个 MSS (TrainTicket 和 OnlineBoutique) 上对 TraFaultDia 进行了评估,这些系统使用开放数据集,其中每个故障类别都与故障系统组件 (服务/Pod) 和根本原因相关联。TraFaultDia 自动将异常调用链分类到这些故障类别中,从而无需人工分析即可自动识别故障系统组件和根本原因。TraFaultDia 在 TrainTicket 和 OnlineBoutique 上的50个新分类任务中,当在同一 MSS 内训练且每个类别提供10个标注实例时,分别达到了 93.26% 和 85.20% 的准确率。在跨系统环境中,当 TraFaultDia 应用于与训练它的 MSS 不同的系统时,对于相同的一组50个新的、未见的异常调用链分类任务,且每个系统每个故障类别也提供10个标注实例,TraFaultDia 分别获得了 92.19% 和 84.77% 的平均准确率。 1.6. 原文链接
2. 整体概括2.1. 研究背景与动机微服务系统 (MSS) 因其固有的复杂性和动态性,常常面临各种故障类型。目前的 AIOps (AI for IT Operations) 方法在自动化运维领域取得了显著进展,特别是在检测系统中的异常调用链 (abnormal traces) 和定位可能导致问题的服务 (responsible service(s)) 方面。然而,这些方法通常止步于此。当检测到异常后,仍然需要运维人员投入大量精力进行进一步的 根本原因分析 (Root Cause Analysis, RCA),以诊断具体的故障类型 (fault types) 和分析故障原因 (failure causes)。这种人工诊断的需求在以下几个方面构成了显著的挑战和空白:
2.2. 核心贡献/主要发现本文通过 TraFaultDia 框架做出了以下核心贡献和主要发现:
3. 预备知识与相关工作3.1. 基础概念为了更好地理解本文提出的 TraFaultDia 框架,我们需要首先掌握以下几个核心概念: 3.1.1. 微服务系统 (Microservice-based Systems, MSS)
3.1.2. 调用链 (Trace)
3.1.3. Span (操作段)
3.1.4. 日志 (Log)
3.1.5. AIOps (AI for IT Operations)
3.1.6. 元学习 (Meta-Learning)
3.1.7. 少样本学习 (Few-Shot Learning)
3.1.8. 自编码器 (Autoencoder, AE)
3.1.9. Transformer 模型
3.2. 前人工作本文在总结相关工作时,主要聚焦于调用链的表示方法和分类任务: 3.2.1. 调用链表示 (Trace Representation)
3.2.2. 调用链分类 (Trace Classification)
3.3. 技术演进该领域的技术演进可以概括为从简单的异常检测向精细故障诊断的转变,以及从单一数据源分析向多模态数据融合的演变:
3.4. 差异化分析本文提出的 TraFaultDia 框架与上述相关工作相比,其核心区别和创新点在于:
4. 方法论4.1. 方法原理TraFaultDia 框架的核心思想是利用 元学习 (meta-learning) 来解决微服务系统 (MSS) 中异常调用链分类的挑战。它将分类过程看作一系列多分类任务,其中每个任务都是将特定 MSS 中的异常调用链分类到预定义的故障类别中。 框架的原理体现在以下几个方面:
4.2. 核心方法详解TraFaultDia 框架由两个主要组件构成:Multi-Head Attention Autoencoder (AttenAE) 和 Transformer-Encoder based Model-Agnostic Meta-Learning (TEMAML) 模型。图 3 概述了其工作流程。 4.2.1. TraFaultDia 工作流概述如图 3 所示,TraFaultDia 的工作流分为两个主要阶段:
4.2.2. AttenAE 用于构建调用链表示AttenAE 负责将原始的高维、多模态调用链数据转化为统一、压缩且有效的表示。图 4 展示了 AttenAE 的架构。 给定一个 MSS,我们用 表示一个调用链集合,其中每个 代表一个由 Span 和 Log 组成的独立调用链。我们将 视为所有调用链中 Span 和 Log 的组合。 下图(原文 Figure 4)展示了 AttenAE 的架构:
4.2.2.1. Span 预处理和向量生成对于每个 Span,我们提取其文本属性(
4.2.2.2. Log 预处理和向量生成我们从 Log 中提取文本属性(
4.2.2.3. 调用链表示构建对于给定的 MSS,我们利用 AttenAE 的编码器为调用链
4.2.3. TEMAML 用于少样本异常调用链分类TEMAML 的目标是训练一个基础模型 Transformer Encoder (TE),使其能够对异常调用链进行多类别分类,并具备少样本学习能力以及跨系统迁移能力。图 5 描绘了 TEMAML 的学习过程。 TEMAML 包含两个阶段:元训练 (meta-training) 和元测试 (meta-testing)。 下图(原文 Figure 5)展示了 TEMAML 的学习过程:
4.2.3.1. 异常调用链分类的基础模型TEMAML 训练的基础模型 TE(表示为 )执行异常调用链的多类别分类。对于来自一个 MSS 的异常调用链分类任务,TE 的工作流程如下:
4.2.3.2. 元训练 (Meta-training)此阶段旨在训练 TE 找到鲁棒的参数,使其能够快速适应来自任何 MSS 的异常调用链分类任务。 我们在一系列异常调用链分类任务(元训练任务),表示为 ,上训练 TE。这些任务从一个 MSS 中采样。每个元训练任务 包含一个支持集 (support set) 和一个查询集 (query set) 。
4.2.3.3. 元测试 (Meta-testing)在此阶段,我们使用优化后的 TE () 来适应新的、未见的异常调用链分类任务(元测试任务),这些任务可以来自任何 MSS。
5. 实验设置5.1. 数据集为了训练和评估 TraFaultDia 框架,研究使用了两个开放数据集中的调用链数据:DeepTraLog 和 Nezha。这些数据集包含了来自两个代表性微服务系统 TrainTicket 和 OnlineBoutique 的调用链。
我们的故障数据集: 研究结合 DeepTraLog 和 Nezha 构建了故障数据集:
TrainTicket 和 OnlineBoutique 的故障类别概览 (来自原文 Table 1):
调用链描述性统计 (来自原文 Table 2): 以下是原文 Table 2 的结果:
数据样本示例: 本文未直接提供具体的数据样本,如某条调用链的原始 Span 或 Log 文本。但通过描述,我们可以直观理解数据形态:
5.2. 评估指标为了评估 TraFaultDia 框架和基线方法在故障分类方面的有效性,研究选择了 准确率 (Accuracy) 作为评估指标。 5.2.1. 准确率 (Accuracy)
5.2.2. t-test (t检验)
5.2.3. Cohen's D (科恩'd)
5.3. 对比基线考虑到缺乏直接可比较的 AIOps 方法,研究通过结合基线和消融研究来评估 TraFaultDia 的性能及其组件的影响。 5.3.1. AttenAE 及其替代方案这些基线探索了与 TraFaultDia 不同的调用链表示构建方法。
5.3.2. Transformer Encoder (TE) 替代方案这些基线将 TraFaultDia 中的 TE 替换为其他基础模型,以执行多类别分类。
5.3.3. TEMAML 替代方案这些基线探索了其他元学习方法或传统模型来替代 TEMAML 进行异常调用链分类。
基线评估范围:
5.4. 实验设计研究设计了四个实验 (E1-E4) 来评估 TraFaultDia:
5.5. 实施细节所有实验都在一台配备 32 核 CPU 和 NVIDIA Ampere A100 GPU (40 GB 显存) 的 Linux 服务器上进行,使用 Python 3.10.6。AttenAE 和 TEMAML 均使用 AdamW 优化器进行训练。详细的实现和超参数设置可在复制包 [Wang et al. 2025] 中找到。 6. 实验结果与分析6.1. 核心结果分析TraFaultDia 在各项实验中均表现出色,验证了其在系统内和跨系统背景下的有效性。 6.1.1. 有效性 (Effectiveness)以下是原文 Table 3 的结果: 表3. TraFaultDia 和基线在 TrainTicket 的50个元测试任务上的比较:平均准确率 (95% CI) 和最小-最大范围。
以下是原文 Table 4 的结果: 表4. TraFaultDia 和基线在 OnlineBoutique 的50个元测试任务上的比较:平均准确率 (95% CI) 和最小-最大范围。
从表3和表4可以看出:
以下是原文 Table 6 的结果: 表6. 效应量:Cohen's d 值比较 TraFaultDia 与有效基线。
6.1.2. 效率 (Efficiency)以下是原文 Table 7 的结果: 表7. TraFaultDia 和有效基线的训练时间(秒)。
以下是原文 Table 10 的结果: 表10. 每元测试任务的平均调用链构建时间(秒)。
6.2. 消融实验/参数分析以下是原文 Table 11 的结果: 表11. 每个实验中元训练任务数量的消融研究。
6.3. 对研究问题的回答根据实验结果,研究者对提出的两个研究问题给出以下回答:
7. 总结与思考7.1. 结论总结本文提出了 TraFaultDia,一个新颖的 AIOps 框架,旨在自动将微服务系统 (MSS) 中的异常调用链分类到具体的故障类别中。该框架通过两个核心组件实现其目标:
7.2. 局限性与未来工作论文作者指出了 TraFaultDia 存在的以下局限性,并提出了相应的未来研究方向:
7.3. 个人启发与批判7.3.1. 个人启发
7.3.2. 批判与潜在改进
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
相似论文推荐
基于向量语义检索推荐的相关论文。