Skip to content
返回架构决策

可观测工具

选让你分钟而非小时调试生产的指标/追踪/日志栈。

为什么

生产坏时可观测栈是你和盲调之间唯一物。对工具(指标"什么"、追踪"哪"、日志"为什么"、结构化+关联)让你分钟找因。错工具(非结构日志、无追踪、无标签指标)意味你 grep 文本和猜。可观测非省钱处——4 小时调 vs 20 分钟调成本乘事故频率压倒工具账单。选择也关于团队用工具能力:最佳追踪系统无人会读火焰图则无用。

何时使用

服务创建时、首事故前。1-2 天搭。调试持续慢时重访。

如何做

1. 确保三柱:
   - 指标(Prometheus/Datadog):带每维标签的计数器+直方图
   - 追踪(Jaeger/DD Trace):分布式、采样、带业务上下文 span 属性
   - 日志(Loki/ELK):结构化 JSON、经 trace_id 关联追踪
2. 要求关联:每日志行有 trace_id;每追踪有 user_id+request_id
3. 经建购选托管(Datadog/New Relic)vs 自管(Prometheus/Loki)
   - 小团队默认托管;大规自管(成本)
4. 仪表业务而非仅基建:"orders_created"非仅"http_requests"
5. 每服务建仪表盘:金信号(延迟、流量、错误、饱和)
6. 测可观测:注入故障,确认 < 10 分钟经工具找到

示例

5 服务系统栈:
  指标:Datadog(托管,1.5 千/月)——每服务仪表盘、SLO 告警
  追踪:Datadog APM——采样 10%、span 属性:user_id、order_id
  日志:Datadog Logs——结构化 JSON、自动关联追踪

仪表:
  logger.info("order_created", { order_id, user_id, total, trace_id })
  tracer.span("charge_card", { user_id, amount })

故障注入测:杀 DB → 追踪显 DB 上 5 秒 span →
  日志显"connection_refused" → 3 分钟找到。

常见问题

  • ⚠无追踪关联的日志——有错误消息却无致其的调用路径;关联让三柱真有用。

最佳实践

  • ✓在框架边界(中间件)仪表使每请求自动获追踪+指标——逐调仪表在新端点被忘。
  • ✓设 SLO(错误率、延迟)带告警而非仅仪表盘——你不看的仪表盘无用;呼你的告警被行动。

相关资源