Telemetry 指系统及其行为所发出的数据,包括 traces、metrics 和 日志。
Trace 记录请求(无论来自原生应用还是终端用户)在多服务架构(如微服务和无服务器原生应用)中的传播路径。
一个 trace 由一个或多个 span 组成。第一个 span 被称为根 span,代表请求从开始到结束的整个生命周期。根 span 之下的子 span 提供了关于请求过程(或构成请求的各个步骤)的更详细上下文信息。
没有 traces,要定位分布式系统中性能问题的根本原因将非常困难。Traces 通过拆解请求在系统中的流动,使调试和理解分布式系统变得更加容易。
Span 是分布式追踪的基本构建块,代表一个具体的操作或工作单元。每个 span 记录请求中的具体动作,帮助我们了解操作执行过程中发生的细节。
一个 span 包含名称、时间相关数据、结构化日志消息及其他元数据(属性),共同描绘操作的完整画面。
根据 Span 在 trace 中的位置,可以区分两种特殊类型的 Span:
在分布式系统中,Span Tags 是附加在每个 Span 上的键值对信息,提供操作详情、资源标识、性能指标和错误信息。它们为理解和分析服务性能与行为提供必要的上下文,是调试和优化分布式原生应用的重要工具。
OperationName 是 span 的一个属性,指定该 span 中具体操作的名称。该名称通常用于标识 span 所代表的具体业务逻辑或系统调用,例如 HTTP 请求的方法加 URL 路径、数据库查询的简要描述,或内部函数调用的名称。
Jaeger 是一个开源的分布式追踪系统。它旨在监控和诊断基于微服务架构的复杂分布式系统,帮助开发者可视化请求 trace、分析性能瓶颈和排查异常。Jaeger 兼容 OpenTracing 标准(现为 OpenTelemetry 的一部分),支持多种编程语言和存储后端,是云原生领域的重要可观测性工具。
OpenTelemetry Collector 是一个与供应商无关的智能体,能够接收、处理和导出 telemetry 数据。它支持接收多种格式的 telemetry 数据(如 OTLP、Jaeger、Prometheus 以及许多商业/专有工具),并将数据发送到一个或多个后端。同时,它还支持在导出前对 telemetry 数据进行处理和过滤。
更多信息,请参见 Collector。