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

证券核心交易系统全链路追踪实践

面向证券行业的可观测性方案:围绕委托、撮合、回报这条核心链路做全链路追踪,用 P99 延迟与错误率阈值构建告警,以及交易时段与节假日联动的降噪策略。

交易系统的可观测性难点

证券核心交易系统的特点决定了它和普通业务系统不一样。一是链路短但极敏感:委托、撮合、回报在几十毫秒内完成,任何一个环节抖动都会直接变成客户投诉。二是强时段性:开盘前后是高峰,午间休市和收盘后是低谷,告警如果按固定阈值,午休时段会被大量“正常”的低流量误报淹没。三是合规要求:审计日志必须完整、不可篡改、可长期留存。

这套系统的可观测性建设,重点是“链路要全、告警要准、审计要留”。

围绕核心链路做全链路追踪

委托到回报的链路通常横跨多个系统:柜台、风控、撮合引擎、行情、回报通道。给每个系统接入 OpenTelemetry,用统一的 traceId 贯穿整条链路,再按业务语义打 attribute:

  • order_id:委托编号
  • sec_code:证券代码
  • channel:委托渠道(网上、柜台、程序化)

这样一条委托出了问题,输入 order_id 就能还原它从柜台到撮合再到回报的完整路径和每一跳耗时。程序化交易(量化)场景尤其依赖这一点——一次批量委托里挑出异常单,靠的就是 attribute 过滤加链路还原。

用 P99 与错误率做告警

交易系统不适合用平均延迟做告警,均值会掩盖长尾。我们按委托类型分别监控:

  • 委托响应 P99 < 200ms
  • 撮合确认 P99 < 500ms
  • 回报推送 P99 < 1s
  • 每类错误率(拒单率、超时率)阈值独立设置

告警触发后,直接把 traceId 和 order_id 附在通知里,值班人员点开就是出问题的链路,省去二次定位。

时段降噪与审计留存

告警最大的问题是误报,我们做了三层降噪:

  1. 按交易时段设定不同阈值:连续竞价、集合竞价、午休、盘后各一套
  2. 节假日与休市日历联动:休市日自动静默“低流量”类告警,只保留机房、硬件、存储等基础设施告警
  3. 抖动抑制:单点偶发抖动先聚合,持续超过 N 分钟才升级

落地后告警量下降约七成,值班同学不再被午休的假告警叫醒。

审计日志方面,要求完整、可追溯、防篡改。方案是把审计日志与运维日志分开存储,审计日志启用防篡改和长期保留(不少于监管要求年限),提供按时间、账户、操作类型的多维检索,配合权限控制保证只有授权人员可查。在信创环境下同样要满足等保和行业合规要求,选型时把审计能力作为硬性条件。