9.3 可观测数据的分类及处理 业界对系统输出的数据总结出三种独立的数据类型,这三种数据类型分别是指标(metrics)、日志(log)和链路追踪(trace),被称为可观测性的“三大支柱”。 指标(metrics):是用于量化和评估系统性能、健康状况或行为的数据点。它们通过对特定事件或活动的统计聚合,提供对系统状态的直观理解。指标通常度量内容(描述所监测的具体内容,如请求数量)、数值(度量的实际值)、时间点(该数据的收集时间)组成。常见的指标有 QPS、API 响应延迟、某接口的失败次数等。指标是发现问题的起点,例如你收到一条告警:“12 点 22 分,接口请求成功率下降到 10%”,这表明系统出现了问题。接着,你结合链路追踪和日志数据深入分析,找到问题的根本原因并进行修复。
业界对系统输出的数据总结出三种独立的数据类型,这三种数据类型分别是指标(metrics)、日志(log)和链路追踪(trace),被称为可观测性的“三大支柱”。
指标(metrics):是用于量化和评估系统性能、健康状况或行为的数据点。它们通过对特定事件或活动的统计聚合,提供对系统状态的直观理解。指标通常度量内容(描述所监测的具体内容,如请求数量)、数值(度量的实际值)、时间点(该数据的收集时间)组成。常见的指标有 QPS、API 响应延迟、某接口的失败次数等。指标是发现问题的起点,例如你收到一条告警:“12 点 22 分,接口请求成功率下降到 10%”,这表明系统出现了问题。接着,你结合链路追踪和日志数据深入分析,找到问题的根本原因并进行修复。
日志(log):日志是系统运行过程中生成的文本数据,用于记录离散事件,提供程序在特定点或阶段的详细信息。日志通常包含系统对某一对象执行的操作、操作结果及其时间戳。如果“指标”告诉你应用程序出现了问题,那么“日志”则解释了问题的原因。当系统发生故障时,分析日志是工程师定位问题的最直接手段。。
链路追踪(trace):链路追踪用于记录请求在分布式系统中的执行过程。当一个请求进入系统后,处理过程中的每个组件都会生成一个处理片段,称为 Span。多个 Span 通过相同的请求 ID 关联,形成一条完整的追踪链路。这条链路实际上是由多个 Span 组成的有向无环图,代表一次分布式请求的完整路径。通过链路追踪,能够有效分析系统中的异常点,帮助在复杂的分布式环境中定位问题。
上述三类数据虽然各自侧重不同,但并非孤立存在,在可观测领域有天然的交集与互补。如通过指标监控(告警)发现问题,再结合日志和链路追踪深入定位问题根源。这三者之间的关系,如下图 9-2 的韦恩图所示。
:::center
图 9-2 指标、链路追踪、日志三者之间的关系 图片来源
:::
可观测系统建设的目标之一:是将日志、指标和链路追踪紧密结合,构建统一的监控平台,帮助我们从宏观到微观、从整体到细节,全方位地了解系统运行的状态。
现在,CNCF 发布的可观测性白皮书中1,将系统输出的各类观测数据统一称为信号(Signals)。主要的信号除了 指标、日志、链路追踪之外又增加了性能剖析(Profiling)和核心转储(Core dump)。
接下来,笔者将详细介绍可观测系统中各类信号的采集、存储和分析处理设计,以及面对海量数据规模时遇到的技术挑战。