← 返回文章列表
解决方案 3 分钟阅读 炬鲸团队

金融行业可观测落地:从分钟级排障到全链路追踪

金融系统的排障窗口以分钟计,割裂的工具链拖慢响应。本文以一次支付链路故障为例,演示如何用统一可观测平台把定位时间从 30 分钟压到 5 分钟以内。

金融场景的排障压力从哪来

金融系统的可用性要求远高于一般互联网业务:支付、交易、账务都是强一致链路,一笔失败可能引发客诉甚至监管问询。排障窗口以分钟计,但现实里很多团队的定位链路是「告警 → 翻日志 → 猜调用 → 查链路」,一次跨服务的故障从发现到定位经常要 20 到 30 分钟。问题不在人,在工具割裂——指标、日志、链路三套系统各管一摊,串不起来。

一次支付链路的真实故障

某次线上故障:交易量平稳,但支付成功率从 99.7% 掉到 96%。告警面板显示支付网关的 P99 延迟从 120ms 升到 900ms,错误率同步上升。传统做法是去日志系统按关键字翻报错,再猜是哪一跳变慢。这次我们换了路径:

  1. 打开告警详情,直接看触发时刻的指标曲线,确认是「延迟型」而非「错误型」故障。
  2. 下钻到该时间窗口的 trace 列表,按耗时倒序,第一条就是元凶:调用第三方支付渠道的 span 从 80ms 涨到 800ms。
  3. 点进这条 span,关联日志显示渠道返回了「上游排队」的重试提示。

结论:不是我们的 bug,是第三方渠道抖动。整个定位过程 4 分钟,其中 3 分钟在等 trace 采样窗口。

落地方案:分层接入,先保住支付主链路

金融系统模块多、改造风险高,建议分层推进。第一层先接入支付、账务、清算这三条核心链路,用 OpenTelemetry 自动埋点覆盖 HTTP、RPC、数据库调用,业务代码几乎零改动。第二层接对外渠道网关,重点记录第三方调用的耗时与返回码。第三层再覆盖营销、风控等周边系统。

关键点是统一标签规范。金融链路跨系统多,一个 trace 要穿过 10 个以上服务,如果每个服务对「交易号」的标签命名不一致(有的叫 txn_id,有的叫 order_no),链路就断在中间。接入前先定好 transaction_id、channel、merchant 这几个核心标签的统一命名。

告警策略:从阈值到基线

金融流量有明显的日内规律(午间、晚间高峰),固定阈值要么频繁误报要么漏报。建议把核心指标(成功率、P99 延迟、单位时间交易量)切换成基线告警:平台按历史周期自动计算正常波动带,偏离超过一定幅度才触发,比拍脑袋定阈值可靠得多。同时给支付成功率这类关键指标配上「连续 N 分钟低于 X」的聚合条件,避免瞬时抖动误报。

可衡量的收益

统一接入后,这个团队的故障平均定位时间从 28 分钟降到 5 分钟以内,跨服务故障的「平均参与人数」从 4 人降到 2 人——因为不用再把日志、指标、链路三个团队的人拉到一起对齐数据。对金融团队来说,省下的每一分钟都对应真实的业务损失减少。