当请求跨越多个服务时,调试微服务变得复杂。本技能提供代码示例和配置模式,使用 Jaeger 和 Tempo 实现分布式追踪,全面了解请求流程。
下載技能 ZIP
在 Claude 中上傳
前往 設定 → 功能 → 技能 → 上傳技能
開啟並開始使用
測試它
正在使用「distributed-tracing」。 如何使用 Docker Compose 设置 Jaeger?
預期結果:
以下是 Jaeger 的基础 Docker Compose 配置:
```yaml
version: '3.8'
services:
jaeger:
image: jaegertracing/all-in-one:latest
ports:
- "16686:16686" # UI
- "14268:14268" # Collector
```
这会启动 all-in-one Jaeger 镜像,UI 在端口 16686,收集器在端口 14268。在 http://localhost:16686 访问 UI。
正在使用「distributed-tracing」。 如何追踪 Python Flask 请求?
預期結果:
使用 OpenTelemetry 对 Flask 应用进行插桩。首先安装包:pip install opentelemetry-api opentelemetry-sdk opentelemetry-exporter-jaeger opentelemetry-instrumentation-flask
然后添加初始化代码创建 tracer provider 并插桩 Flask。span 将自动发送到 Jaeger 收集器。
安全審計
安全All 54 static findings are false positives. The static scanner misinterprets markdown documentation code blocks as executable code, YAML frontmatter as crypto algorithms, and standard OpenTelemetry API calls as reconnaissance. This skill is legitimate DevOps documentation for distributed tracing with Jaeger and Tempo. No actual security risks identified.
品質評分
你能建構什麼
SRE 调试生产问题
使用追踪 ID 跟踪跨服务的请求,识别生产环境中导致延迟或错误的微服务。
DevOps 实现可观测性
为现有服务添加 OpenTelemetry 插桩,并部署 Jaeger 进行集中式追踪收集。
开发者理解依赖关系
可视化服务依赖关系,了解请求在系统架构中的流转。
試試這些提示
如何使用 Docker Compose 部署 Jaeger 进行本地开发?
展示如何使用 OpenTelemetry 对 Flask 应用进行插桩并将追踪发送到 Jaeger。
如何使用 HTTP 头在微服务之间传播追踪上下文?
在生产环境中应该使用什么采样策略来减少追踪开销同时保持可见性?
最佳實務
- 从 1-10% 的头部采样开始,然后根据流量进行调整
- 添加有意义的 span 属性,如 user_id 和 request_id 以便过滤
- 在所有服务间的 HTTP 头中传播追踪上下文
避免
- 不要在生产环境中 100% 采样所有追踪,这会产生过大的开销
- 避免为每个函数调用创建 span;专注于外部调用和数据库操作
- 不要硬编码收集器端点;使用环境变量进行配置