可观测工具
选让你分钟而非小时调试生产的指标/追踪/日志栈。
为什么
生产坏时可观测栈是你和盲调之间唯一物。对工具(指标"什么"、追踪"哪"、日志"为什么"、结构化+关联)让你分钟找因。错工具(非结构日志、无追踪、无标签指标)意味你 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(错误率、延迟)带告警而非仅仪表盘——你不看的仪表盘无用;呼你的告警被行动。