用途:在分布式系统中追踪请求,理解延迟、服务依赖与故障点。适用于调试延迟问题、梳理服务依赖、识别瓶颈、追踪错误传播和分析请求路径。
主要能力:围绕 Trace(端到端请求)、Span(单次操作)、Context(跨服务传播的元数据)、Tags(过滤用键值对)和 Logs(Span 内时间戳事件)组织追踪数据。支持 Jaeger 与 Grafana Tempo 两种后端,并提供 Kubernetes 与 Docker Compose 部署方式。
使用方式:Jaeger 可用 Operator 部署(kubectl create namespace observability 后应用 jaeger-operator.yaml),或用 all-in-one 镜像的 Docker Compose。应用侧推荐 OpenTelemetry 埋点,资料给出 Python(Flask)、Node.js(Express)、Go 示例,通过 JaegerExporter 或 OTLP 上报。跨服务需传播上下文,HTTP 使用 traceparent 与 tracestate 头,Python 用 inject(headers),Node.js 用 propagation.inject(context.active(), headers)。Tempo 通过 ConfigMap 配置接收 jaeger 与 otlp 协议,存储可接 S3。采样支持 probabilistic、ratelimiting 与基于 TraceIdRatioBased 的自适应策略。
适用场景:微服务延迟排查、依赖图分析、错误传播定位、慢请求与 5xx 查询(如 service=my-service、duration > 1s、error=true)。
限制:资料未提供具体收费、价格与平台支持范围;生产采样建议 1-10%,需关注追踪开销(资料称 <1% CPU 影响)并配置批量 Span 处理器。不适用于与分布式追踪无关的任务。