2. Jaeger 基础回顾:架构与核心概念
在深入变更冻结闸口的故障排查之前,必须先牢固掌握 Jaeger 的基础架构与核心数据模型。本章将快速梳理 Jaeger 的四大组件(Agent、Collector、Query、UI)以及分布式追踪的基石——Span 与 Trace。
2.1 Jaeger 整体架构
Jaeger 采用模块化、可伸缩的架构设计,支持从单机部署到大规模生产集群的多种模式。其核心组件包括:Agent(边车代理)、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 代表入口请求。
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。排查结束后恢复至正常采样率,避免存储过载。