2. Jaeger 基础回顾:架构与核心概念

在深入变更冻结闸口的故障排查之前,必须先牢固掌握 Jaeger 的基础架构与核心数据模型。本章将快速梳理 Jaeger 的四大组件(Agent、Collector、Query、UI)以及分布式追踪的基石——Span 与 Trace。

2.1 Jaeger 整体架构

Jaeger 采用模块化、可伸缩的架构设计,支持从单机部署到大规模生产集群的多种模式。其核心组件包括:Agent(边车代理)、Collector(收集器)、Query(查询服务)和 UI(用户界面)。

Jaeger 核心架构组件与数据流 Jaeger 核心架构组件与数据流 应用服务 A 应用服务 B 应用服务 C Jaeger Agent Jaeger Collector 存储后端 Jaeger Query Jaeger UI 数据流向 App → Agent Agent → Collector Collector → 存储 Query ← 存储 → UI

2.2 组件职责详解

组件 职责 部署模式 关键特性
Agent 作为 DaemonSet 或 Sidecar 运行,接收应用发出的 Span 数据,批量发送给 Collector 每个节点或每个 Pod 一个 降低应用端网络开销;支持 UDP/gRPC 协议
Collector 接收 Agent 或应用直连的 Span 数据,进行校验、索引、采样,并写入存储后端 无状态水平扩展 支持 Kafka 作为缓冲层;可配置动态采样策略
Query 提供 gRPC/HTTP API,从存储后端检索 Trace 数据,供 UI 展示 无状态水平扩展 支持 Trace ID 精确查询、服务/操作/标签过滤
UI Web 图形界面,用于搜索、查看 Trace 详情、分析服务依赖关系 单实例或负载均衡 火焰图、Trace 对比、服务拓扑图
生产部署建议: 在变更冻结闸口场景中,建议 Collector 与 Query 均采用无状态水平扩展部署,并启用 Kafka 缓冲层,防止突发流量导致 Span 丢失。Agent 推荐使用 DaemonSet 模式,避免 Sidecar 带来的资源开销。

2.3 Span 与 Trace 核心概念

分布式追踪的核心数据模型由 Span(跨度)和 Trace(追踪)构成。理解这两个概念是进行故障排查的基础。

2.3.1 Span

Span 是追踪的最小工作单元,代表一个服务中发生的单个操作(如一次 HTTP 请求、一次数据库查询)。每个 Span 包含以下关键字段:

  • Operation Name:操作名称,例如 GET /api/order。
  • Span ID:全局唯一标识。
  • Trace ID:所属 Trace 的全局唯一标识。
  • Parent Span ID:父 Span 的 ID,用于构建调用链层级。
  • Start Time / Duration:开始时间与持续时长。
  • Tags:键值对元数据,如 http.status_code=200。
  • Logs:时间戳标记的结构化日志,用于记录异常或关键事件。

2.3.2 Trace

Trace 由一组具有相同 Trace ID 的 Span 组成,完整记录一次请求从入口到所有下游服务的完整调用路径。Trace 本质上是一个有向无环图(DAG),根 Span 代表入口请求。

Span 与 Trace 层级关系 Span 与 Trace 层级关系 根 Span: GET /order Trace ID: abc123 子 Span: 用户校验 Parent: 根 Span 子 Span: 查询库存 Parent: 根 Span 孙 Span: DB 查询 Parent: 查询库存 T0 T1 T2

2.4 关键概念对比

概念 定义 标识 关系
Span 单个服务内的单个操作 Span ID(全局唯一) 一个 Trace 包含多个 Span
Trace 一次完整请求的调用链 Trace ID(全局唯一) 由根 Span 和若干子 Span 组成
Parent Span 发起调用的上游 Span Parent Span ID 构建调用层级树
Context Propagation Trace 上下文在服务间传递的机制 HTTP Header / gRPC Metadata 保证跨服务 Span 属于同一 Trace
故障排查要点: 在变更冻结闸口场景中,重点关注 Span 的 Duration 和 Tags。如果某个 Span 的 Duration 异常增大,或 Tags 中包含 error=true,则说明该服务节点可能受到变更影响。通过 Trace ID 可以快速定位整条调用链上的所有异常 Span。

2.5 采样策略

在生产环境中,全量采集所有 Trace 会产生巨大的存储开销。Jaeger 支持多种采样策略:

  • 固定概率采样:按固定百分比(如 1%)采集 Trace。
  • 速率限制采样:每秒最多采集 N 个 Span。
  • 自适应采样:根据流量动态调整采样率,保证重要 Trace 不被遗漏。
  • 远程采样:通过 Collector 动态下发采样配置,无需重启应用。
注意: 在变更冻结闸口排查期间,建议临时将受影响服务的采样率提升至 100%,确保不遗漏任何异常 Trace。排查结束后恢复至正常采样率,避免存储过载。