生产环境可观测性全栈复盘:一个订单从创建到支付的全链路追踪实战
引言 去年双十一压测,订单链路在 3000 QPS 时出现零星超时。监控大盘显示一切"绿色正常"——各服务 QPS 正常、P99 < 200ms、错误率 0.01%。但用户侧反馈"下单偶尔转圈 5 秒"。 我们花了 4 小时定位问题。过程极其痛苦: 订单服务日志说"调用支付超时",支付服务日志说"没收到请求"——谁在说谎? 网关日志显示请求确实到了支付服务,耗时 3.2s——3.2 秒花在哪了? 支付服务的 JVM 监控正常、DB 监控正常、Redis 监控正常——那 3.2 秒到底在等什么? 最后发现是支付服务调用的某银行网关 TLS 握手偶发慢(银行侧负载均衡抖动),但定位过程暴露了一个致命问题:我们有监控、有日志、有告警,但它们是三个孤岛。Metric 告诉你"有问题",但看不到调用链;Log 能搜到报错,但串不起来跨服务的因果关系;Trace 压根没接。 那之后我们花了三周搭了完整的可观测性体系:OpenTelemetry 采集 + Jaeger 存 Trace + Prometheus 存 Metric + Loki 存 Log,全部用 traceId 串联。再遇到....