核心概念

目录

Telemetry

Telemetry 指系统及其行为所发出的数据,包括 traces、metrics 和 日志。

Trace

Trace 记录请求(无论来自原生应用还是终端用户)在多服务架构(如微服务和无服务器原生应用)中的传播路径。

一个 trace 由一个或多个 span 组成。第一个 span 被称为根 span,代表请求从开始到结束的整个生命周期。根 span 之下的子 span 提供了关于请求过程(或构成请求的各个步骤)的更详细上下文信息。

没有 traces,要定位分布式系统中性能问题的根本原因将非常困难。Traces 通过拆解请求在系统中的流动,使调试和理解分布式系统变得更加容易。

Span

Span 是分布式追踪的基本构建块,代表一个具体的操作或工作单元。每个 span 记录请求中的具体动作,帮助我们了解操作执行过程中发生的细节。

一个 span 包含名称、时间相关数据、结构化日志消息及其他元数据(属性),共同描绘操作的完整画面。

根据 Span 在 trace 中的位置,可以区分两种特殊类型的 Span:

  • 根 Span:根 Span(Trace 根 Span)是 trace 中的第一个 Span(位于顶部),标志着请求的起点。
  • 服务入口 Span:服务入口 Span 是当服务作为服务器被调用时生成的第一个 Span,即请求进入服务时产生的 Span。

Span Tags

在分布式系统中,Span Tags 是附加在每个 Span 上的键值对信息,提供操作详情、资源标识、性能指标和错误信息。它们为理解和分析服务性能与行为提供必要的上下文,是调试和优化分布式原生应用的重要工具。

OperationName

OperationName 是 span 的一个属性,指定该 span 中具体操作的名称。该名称通常用于标识 span 所代表的具体业务逻辑或系统调用,例如 HTTP 请求的方法加 URL 路径、数据库查询的简要描述,或内部函数调用的名称。

Jaeger

Jaeger 是一个开源的分布式追踪系统。它旨在监控和诊断基于微服务架构的复杂分布式系统,帮助开发者可视化请求 trace、分析性能瓶颈和排查异常。Jaeger 兼容 OpenTracing 标准(现为 OpenTelemetry 的一部分),支持多种编程语言和存储后端,是云原生领域的重要可观测性工具。

OpenTelemetry Collector

OpenTelemetry Collector 是一个与供应商无关的智能体,能够接收、处理和导出 telemetry 数据。它支持接收多种格式的 telemetry 数据(如 OTLP、Jaeger、Prometheus 以及许多商业/专有工具),并将数据发送到一个或多个后端。同时,它还支持在导出前对 telemetry 数据进行处理和过滤。

更多信息,请参见 Collector