面向金融核心交易系统的可观测性方案:以全链路追踪定位跨系统故障和告警降噪为主线,给出指标口径、SLO 定义与值班处理流程,兼顾监管审计与性能要求。
金融系统的可观测性难点不在采集,而在两件事:一是交易链路跨十几个系统,出问题定位慢;二是告警太多,值班的人已经麻木。本文给出一个以链路追踪和告警降噪为主线的落地方案。
一笔转账要经过渠道、风控、账务、清算等十几个系统,任何一个环节超时都表现为"交易失败"。光看单系统日志查不出根因,必须靠 Trace 把整条链路串起来。方案要点:
traceparent,不要自造请求头。txn.id),客服报单号就能反查整条链路。recordException 并标 ERROR 状态。一次真实案例:某交易高峰出现 2% 失败,靠"按 txn.id 反查 + 慢 Span 排序",5 分钟定位到清算系统某分片连接池耗尽,而此前靠日志排查花了近两个小时。
金融系统告警天然多:基础设施、中间件、业务三层叠加,一次故障能触发上百条。降噪按三层做:
第一层抑制:同一指标在收敛窗口内只发一条,重复触发不重复发。第二层聚合:把"同一交易链路、同一根因"的告警归并成一条,附上受影响服务列表。第三层分级:只对 SLO 相关指标做电话/短信级告警,其余走消息队列和看板。
告警该不该响,最终看 SLO。建议按交易类型分别定义:核心转账可用性目标 99.99%,查询类 99.9%。错误预算按季度核算,燃尽到 80% 时暂停非紧急变更。指标口径要在全公司统一,例如"失败率"必须明确是"失败笔数 / 总笔数"而非"失败请求 / 总请求",否则不同团队报上来的数字对不上。
监管要求日志留存和操作可追溯,因此日志原始数据保留策略要满足监管年限,告警处置全程留痕:谁接警、何时确认、做了哪些动作、何时恢复,全部落到工单。值班流程建议固定成 runbook:接警 → 用链路定位 → 按预案止血 → 事后复盘更新 SLO,每一步都有对应看板和查询模板,减少对个人经验的依赖。