【背景】 我在一家中台团队负责核心链路的指标体系搭建(3 年,Java + Go 混合栈,MySQL + Redis + Kafka,K8s 部署)。去年 Q3 一次典型的 P99 抖动(订单查询接口 P99 从 12ms 飙到 85ms,持续约 90s),事后复盘时我拉了三套指标,结果给出了三个"看起来都成立"的根因:
- RED 视角(Rate / Errors / Duration):错误率没动(< 0.01%),但 Duration P99 在 14:02:17 开始爬升,比 DB 侧任何指标都早 3s → 指向"应用层排队"。
- USE 视角(Utilization / Saturation / Errors):DB active connections 占比从 42% 跳到 91%,但 CPU / IO wait 都没过 60% → 指向"连接池饱和,不是资源瓶颈"。
- 业务漏斗视角(下单→支付→履约各环节转化率):支付成功率在同一窗口掉了 0.3%,但下单量没变 → 指向"下游支付网关超时"。
三个结论不矛盾,但指向的修复动作完全不同:应用层排队 → 加线程池 / 调连接池;DB 连接饱和 → 扩连接 / 加只读副本;支付网关超时 → 联系第三方 / 加降级。我们最后排查下来,根因是支付网关慢 → 回调占住了应用线程 → 连接池被拖满。也就是三个都对,但业务漏斗才是因果链的源头,RED 和 USE 只是中间表现。
这件事让我开始认真想一个方法论问题:当三套指标体系同时在线、互相不矛盾但指向不同修复方向时,团队的"默认信任顺序"是什么?
【常见分歧 / 几种做法】
我观察到的大致分三派:
-
RED 优先派(偏 SRE / 平台团队): 逻辑是"用户感知的就是 Rate-Errors-Duration",所以告警和排障都从 RED 出发。优点:口径统一、跨服务可比;缺点:只描述"现象",不解释"为什么",对中间件 / 依赖链问题容易停在第一层。
-
USE 优先派(偏基础设施 / DBA 团队): 逻辑是"资源饱和才是根因,Duration 只是表象"。优点:直接指向容量瓶颈;缺点:对"资源没满但逻辑阻塞"的场景(死锁、慢查询、线程池饥饿)容易漏判。
-
业务漏斗优先派(偏业务 / 产品技术团队): 逻辑是"用户不关心你 CPU 多少,只关心下单成功率"。优点:天然对齐因果链源头、避免"修了指标但用户没感知"的自嗨;缺点:口径依赖业务定义,跨团队对齐成本高,且漏斗粒度粗,定位到具体服务还要靠 RED / USE 补刀。
还有一种"我全都要"的做法:三套都上 dashboard,但没有明确的排障优先级和升级路径——结果就是告警风暴时值班同学不知道先看哪个面板。
【我的倾向与理由】
我倾向"分层信任 + 阶段切换":
- 发现阶段(告警触发 → 前 5 分钟):信 RED。因为 RED 是"用户侧"的,Duration P99 上升是最快能确认"用户受到了影响"的信号。这一步的目标不是定位根因,而是确认影响面(哪个接口、哪个租户、多大比例)。
- 定位阶段(5~30 分钟):切 USE + 调用链。因为 RED 告诉你"慢了",USE 告诉你"哪里满了"。这一步需要把 DB / 中间件 / 下游 RPC 的饱和指标拉出来,做排除法而不是确认法。
- 归因阶段(30 分钟+):拉业务漏斗 + 依赖拓扑。因为前两步可能指向"支付网关慢",但需要漏斗数据确认"确实是支付环节丢的,不是下单环节",才能决定修谁的 SLA、找谁谈降级。
核心原则:指标体系不是"哪套更准"的问题,而是"在排障的哪个阶段该信谁"的问题。 三套指标不是竞争关系,是流水线上的三个工位。
但我也承认这个模型有局限:
- 对"非用户可感知"的内部链路(批处理、数据同步),RED 里的 R(Rate)和 E(Errors)意义不大,业务漏斗也拉不出来,这时候 USE 几乎是唯一可靠信号。
- 对"秒级抖动"(< 10s),三套指标的采集粒度(通常 15s~60s)都来不及,只能靠 eBPF / 应用内 trace 补。
- 指标口径对齐的成本被严重低估:同一个"P99",A 团队按 1min 窗口算、B 团队按 5min 窗口算、C 团队按请求维度算,三个数能差 2 倍。
【想听大家】
- 你们团队有没有一个成文的"排障指标优先级"?还是全靠值班同学的经验?
- 三套指标同时在线时,你们的 dashboard 是怎么组织的——按服务分(每服务一个面板)还是按阶段分(发现 / 定位 / 归因三个 tab)?
- 指标口径对齐这件事,你们是怎么推的?是平台团队统一定义,还是各业务团队自己定、平台只管存储和展示?
- 有没有遇到过"信了 A 套指标修了 A 处,结果 B 套指标还是报警"的情况?怎么处理的?
- 对于非用户可感知的内部链路(ETL、数据同步、定时任务),你们用什么指标体系?
欢迎拍砖,尤其是"我全都不信,我只看 XX"的极端派——我想听你们的理由。