分布式追踪
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/distributed-tracing。
技能介绍
微服务里「慢在哪、错从哪来」往往说不清
一次用户请求会穿过网关、多个业务服务和下游存储。各服务各自打日志,request_id 对不齐时,你只能猜:是 A 服务排队、B 调用超时,还是 C 重试把错误放大。没有端到端视图,延迟排查和错误传播分析都会变成串日志的体力活。
技能在做什么
本技能围绕 Jaeger 与 Grafana Tempo 的部署与使用,把一次请求整理成 Trace(追踪),并在每个服务边界留下 Span(跨度)。核心能力包括:
- 埋点:以 OpenTelemetry 为推荐路径,覆盖 Python(Flask)、Node.js(Express)、Go 等常见栈
- 上下文传播:经 HTTP 头在服务间传递 Context,必要时扩展 baggage
- 采样:概率、限流、自适应等策略,避免生产环境全量采集拖垮 CPU
- 分析:在 Jaeger 中查慢请求与错误,利用自动生成的服务依赖图看请求速率、错误率与平均延迟
- 与日志联动:用标签(如
user_id、request_id)把 span 和日志对齐,缩短故障排查路径
文档中还给出 Kubernetes / Docker Compose 部署 Jaeger、Tempo 在 K8s 上的部署思路,以及 references/jaeger-setup.md、references/instrumentation.md 等可执行参考。
适用边界
任务与分布式追踪无关,或必须依赖本技能范围外的其他领域/工具时,不应硬套本技能。生产上宜控制采样(常见建议 1–10%)、统一 span 命名、在边界传播上下文,并监控追踪自身开销;若「没有 trace」或「延迟开销过高」,需从收集器端点、采样率、批量处理器与导出器配置逐项核对。
使用场景
- 线上接口 P99 升高,需要在 Jaeger 里按 Trace 对比各服务 Span 耗时,定位慢在哪个边界
- 新服务上线前,用 Jaeger 依赖图核对调用链与错误率,确认上下游关系是否符合设计
- 用户报错偶发,需沿 HTTP 上下文传播追踪错误 Span,看从网关到哪一层开始失败
- 生产全链路采样后开销偏大,要调整概率采样并在查询侧验证慢请求仍能被抽到
适合人员
- 在 Kubernetes 上维护微服务、值班时要查跨服务延迟与故障点的 SRE / 平台工程师
- 负责 Flask、Express 或 Go 服务,需要按 OpenTelemetry 规范补埋点并传播上下文的业务后端
- 负责部署 Jaeger 或 Grafana Tempo 收集链路,并配置采样与导出器的可观测性平台同学
- 故障排查时需把应用日志与 Trace 标签(如 request_id)对齐的 on-call 工程师