结论先行:一次故障跨了网络、主机、数据库、中间件和业务系统,五个团队各自盯着自己的监控,屏幕上都是绿的,只有用户那边是红的。这时候被拖住的往往不是修复速度,而是「到底该谁先看」。把一次请求在各系统里走过的路还原成一条可查的链路,是把互相等变成对着同一份数据说话的前提。
为什么「我这边正常」可以同时成立
每个团队只看得见自己那一层:网络看链路与丢包,主机看资源与进程,数据库看慢查询,业务看订单量。五种视角各自成立,合起来却推不出结论。
更麻烦的是三件事:指标口径不统一,一边算平均值一边算分位值;时钟不同步,同一秒的日志在两边差了半分钟;调用关系没记下来,谁也不知道这个接口背后还调了谁。于是会议越开越长,结论越说越软。
一条链路能替团队回答的三个问题
- 这一段慢了多少——给出具体数值,而不是「有点慢」;
- 是哪一次调用出了问题——定位到单笔请求,而不是「整体有波动」;
- 这段调用是谁发起的、发到哪去——把方向写清楚,而不是「应该是那边」。
这三个问题都能用同一份数据回答之后,讨论的焦点会从「谁的锅」转到「哪一段」,而这恰好是可修的那一段。
链路是怎么拼起来的
需要三类数据配合:业务日志提供业务语义,也就是这是哪笔订单、哪个客户;调用链提供调用关系与分段耗时;指标提供资源与容量视角。三类缺一,归因都会偏——只有日志会看不出耗时分布,只有调用链会看不出业务影响,只有指标会说不清某一次具体请求发生了什么。
拼起来的前提是三项一致性:同一个请求要有同一个标识贯穿各系统;各系统的时间要能对到同一个基准;服务、主机、实例三种实体要能互相索引。这三项没对齐,结果就是「数据都有,就是拼不上」。
落到日常的三条约定
一是在跨团队排障时只认同一份链路视图,任何一方提供的数据都要能标到链路上去,标不上去的先放一边。二是先定位到具体某一段,再拉对应的团队进来,而不是一开始就把所有人拉进会议室。三是每次跨团队故障留一份链路快照作为复盘材料——各自的截图拼不成一条时间线,快照可以。
边界与前提
链路视图能缩短定位时间,但不改变责任划分,跨团队故障仍然需要有明确的牵头方。数据接入也要分步走:先覆盖交易主链,再扩到支撑系统,不必一开始就追求全覆盖。深圳市奇摩计算机有限公司在为客户搭这类视图时,通常是先从一条主链路打通开始验证,再谈扩展。需要梳理跨系统排障链路,欢迎预约咨询。
