一句话:提出STEAM,一种基于GNN与逻辑子句的追踪采样方法,在分布式系统中保留关键长尾追踪,提升可观测性。
分布式系统与微服务中,追踪是理解内部状态的关键可观测性信号。为降低开销,现有框架多采用均匀采样,但追踪呈长尾分布,均匀采样会遗漏或稀有化少数关键追踪,损害可观测性。本文提出STEAM,一种保持可观测性的追踪采样方法。STEAM使用图神经网络进行追踪表示,并通过逻辑子句融入追踪比较的领域知识,随后采用可扩展的采样策略,优先选择彼此不相似的追踪,以保留更多信息。STEAM在OpenTelemetry上实现,包含约1.6K行Golang和2K行Python代码。在四个基准微服务应用及一个生产系统上的评估表明,其性能优于基线方法,且能在约4秒内处理15,000条追踪。
In distributed systems and microservice applications, tracing is a crucial observability signal employed for comprehending their internal states. To mitigate the overhead associated with distributed tracing, most tracing frameworks utilize a uniform sampling strategy, which retains only a subset of traces. However, this approach is insufficient for preserving system observability. This is primarily attributed to the long-tail distribution of traces in practice, which results in the omission or rarity of minority yet critical traces after sampling. In this study, we introduce an observability-preserving trace sampling method, denoted as STEAM, which aims to retain as much information as possible in the sampled traces. We employ Graph Neural Networks (GNN) for trace representation, while incorporating domain knowledge of trace comparison through logical clauses. Subsequently, we employ a scalable approach to sample traces, emphasizing mutually dissimilar traces. STEAM has been implemented on top of OpenTelemetry, comprising approximately 1.6K lines of Golang code and 2K lines of Python code. Evaluation on four benchmark microservice applications and a production system demonstrates the superior performance of our approach compared to baseline methods. Furthermore, STEAM is capable of processing 15,000 traces in approximately 4 seconds.
@inproceedings{HeFLZ0LR023,
title = {STEAM: Observability-Preserving Trace Sampling},
author = {Shilin He and Botao Feng and Liqun Li and Xu Zhang and Yu Kang and Qingwei Lin and Saravan Rajmohan and Dongmei Zhang},
booktitle = {FSE},
year = {2023},
doi = {10.1145/3611643.3613881}
}