监控黄金信号与 RED/USE 方法论:业务与资源指标的指标设计

深度讲解可观测性指标的方法论设计:Google 四大黄金信号(Latency/Traffic/Errors/Saturation)、RED(Rate/Errors/Duration)、USE(Utilization/Saturation/Errors)与四类指标类型,如何在业务监控与资源监控中落地、每个服务/每类资源该采哪些指标、告警阈值与容量规划,以及方法论之间的选择与组合。

“该监控哪些指标?"——回答不了这个问题,监控仪表盘就会沦为"什么都有、什么都没用"的数字墙。方法论给出答案:Google 用四大黄金信号看用户视角的服务健康,RED 把服务指标压缩为三个数字,USE 从资源视角看"设备是否饱和”。本指南讲透这三套指标设计方法论,以及如何组合落地到业务监控与资源监控。

关键概念:黄金信号(服务健康)=延迟/流量/错误/饱和度;RED(服务)=Rate/Errors/Duration;USE(资源)=Utilization/Saturation/Errors。三套方法论解决的是同一问题:用最少的指标看清"服务到底行不行"。


1. 为什么需要指标方法论

1.1 没有方法的监控会怎样

典型失控表现:
  - 每个服务 40+ 指标,告警天天响、没人看
  - 指标都"绿",但用户已经报障(指标没选对)
  - 资源指标满屏,却不知道"哪个先扛不住"

问题本质:
  指标数量 ≠ 可观测性
  → 需要"选什么、怎么定义、怎么解读"的方法

1.2 方法论的共同目标

一套好指标应做到:
  - 最少数量覆盖核心风险(别求全)
  - 从"用户/服务/资源"视角定义健康
  - 指标与告警、容量规划、SLO 直接连通
  - 可解释:新同学看指标能判断服务是否正常

2. Google 四大黄金信号

2.1 四个信号

Latency(延迟):请求多快返回
  · 关注分布(P50/P95/P99)而非均值
  · 区分"成功请求"与"失败请求"的延迟
  · 错误请求延迟高≠问题,可能是正常失败路径慢

Traffic(流量):请求压力有多大
  · QPS/RPS、并发请求、带宽/吞吐
  · 高流量本身不是问题,结合延迟/错误判断

Errors(错误):请求失败的比率与原因
  · 显式错误:HTTP 5xx、异常返回码
  · 隐式错误:返回 200 但结果不对(更难发现)

Saturation(饱和度):服务还有多少余量
  · 接近瓶颈的程度(如 CPU 队列、连接池占用、线程池队列)
  · 饱和度越接近 100%,延迟越会非线性恶化

2.2 如何落地黄金信号

每个服务至少建立四个信号面板:
  延迟:histogram,P50/P95/P99 + 告警
  流量:QPS 总量 + 按路由/租户拆
  错误:错误率(error rate)而非错误数
  饱和度:CPU/内存/连接池/队列利用率

组合解读示例:
  流量 ↑ + 延迟 ↑ + 错误 ↑ → 容量/资源问题
  流量 ↓ + 延迟 ↑ + 错误 ↑ → 依赖故障(下游慢)
  流量正常 + 错误 ↑ → 逻辑/数据问题

ℹ️ 核心:黄金信号的价值是"用四个维度交叉判断根因方向"。单看任一维度都会误诊——四个一起看才有诊断力。


3. RED:服务的三个数字

3.1 RED 方法

RED = 每个服务只维护三个指标:

  Rate(速率)   :每秒请求数(QPS)
  Errors(错误) :每秒错误数 / 错误率
  Duration(时长):请求耗时分布(P95/P99)

用途:
  主要针对"请求/响应"型服务(API/后端/网关)
  与黄金信号重叠度很高,但更"最小化"
  → 适合作为每个微服务的基础监控基线

3.2 RED 落地示例

以 Prometheus 为例的三个指标:
  http_requests_total          → Rate
  http_requests_total{code=5xx} → Errors
  http_request_duration_seconds_histogram → Duration

面板与告警:
  Rate:请求量趋势(业务流量)
  Errors:错误率 > 阈值 → 告警
  Duration:P95 > 阈值 → 告警

扩展:
  RED 适合"每个服务一套"统一基线
  再叠加业务指标(订单数、转化率)做业务观测

4. USE:资源的三个维度

4.1 USE 方法

USE = 面向"资源"(CPU/内存/磁盘/网络/连接)的三问:

  Utilization(利用率):资源有多忙?
    读-改-写占比、CPU 使用率、磁盘 IO 利用率
  Saturation(饱和度):有多少排队/等待?
    运行队列长度、等待数、拥塞程度
  Errors(错误):有多少错误?
    设备错误、丢包、超时、IO 错误

用途:
  面向资源/基础设施的监控(服务器、数据库、队列、网络)
  定位"资源是否成为瓶颈"比黄金信号更精准

4.2 USE 落地示例

CPU:
  Utilization:% CPU 使用率
  Saturation:load average / run queue
  Errors:CPU 硬件错误(罕见)

磁盘:
  Utilization:磁盘使用率 / IO 利用率
  Saturation:IO 等待队列(iowait)
  Errors:坏块/超时

网络:
  Utilization:带宽利用率
  Saturation:发送/接收队列、丢包
  Errors:网卡错误计数

数据库连接池:
  Utilization:已用连接/总数
  Saturation:等待获取连接的请求数
  Errors:连接超时/拒绝

ℹ️ 核心:USE 的关键是"Saturation(排队)"——资源接近饱和的早期信号比利用率更早。利用率 90% 可能还不堵,一旦开始排队,延迟立刻恶化。


5. 三套方法论如何选择与组合

5.1 适用对照

黄金信号(Google):
  · 全局服务健康,架构师/值班第一屏
  · 强调"延迟分布 + 饱和度"的诊断组合

RED:
  · 每个服务的最小监控基线
  · 适合大规模微服务:统一三个指标,低成本全覆盖

USE:
  · 基础设施/资源视角,容量规划
  · 解决"资源是不是瓶颈、还有多少余量"

组合建议:
  服务层用 RED(统一基线)
  业务层用黄金信号(诊断 + 用户视角)
  资源层用 USE(容量 + 瓶颈定位)
  三套是"同一系统在不同视角"的观测,互补而非冲突

5.2 一个综合落地示例

订单服务(示例):
  服务 RED:
    order_requests_total / order_errors_total / order_duration_seconds
  业务黄金信号:
    latency P99、QPS、错误率、饱和度(DB 连接池利用率)
  依赖资源 USE:
    数据库 CPU 利用率 + IO 队列、Redis 连接饱和度
  → 告警、容量规划、SLO 都基于这套指标

避免:
  - 每个服务 30+ 自定义指标(用统一基线 + 少量业务扩展)
  - 指标口径不一致(命名/单位/聚合方式要统一)

6. 与 SLO / 告警 / 容量规划的衔接

6.1 指标 → SLO

SLO 的指标来源就是方法论指标:
  SLI 可用性 = 1 - Errors/Rate
  SLI 延迟   = P95 latency 或 成功请求比例
  → 用黄金信号/RED 的指标直接定义 SLI

好处:
  指标定义与 SLO 定义同源 → 无口径冲突

6.2 指标 → 告警

告警规则设计原则(基于方法论):
  - 错误率告警:Errors/Rate 超阈值(而非错误数)
  - 延迟告警:P95/P99 超阈值(而非均值)
  - 饱和度告警:接近阈值前提前告警(容量前置)
  - 组合告警:延迟高 + 错误高 + 流量异常 → 一次到位

避免:
  - 直接对"利用率 100%"告警(已经晚了)
  - 对均值告警(掩盖长尾用户受害)

6.3 指标 → 容量规划

用指标做容量:
  - 记录峰值 Rate/饱和度 → 预测扩容点
  - 饱和度趋势(运行队列增长)→ 提前扩容
  - 黄金信号 + USE 结合:服务变慢先看资源饱和度

关键:
  容量规划看"Saturation 趋势"而非"Utilization 当前值"
  排队出现时,已经是容量临界

7. 常见避坑

坑现象对策
指标多而杂没人看、没价值方法论选最小集
只看均值长尾用户受害用 P95/P99 分布
只报错误数流量不同难比较用错误率(Errors/Rate)
忽略饱和度延迟突增才发现监控排队/队列
每服务自定义一堆口径不统一统一基线 + 少量扩展
告警只看单指标误诊根因黄金信号组合解读

8. 最佳实践清单

□ 每个服务建 RED 三指标(Rate/Errors/Duration)基线
□ 业务关键服务叠加黄金信号(延迟分布/流量/错误率/饱和度)
□ 基础设施用 USE(利用率/饱和度/错误)做容量监控
□ 延迟一律用分布(P50/P95/P99),告警用 P95/P99
□ 错误用错误率而非错误数,区分显式/隐式错误
□ 饱和度是容量预警的前置信号,提前告警
□ 指标口径统一(命名/单位/聚合),与 SLO 同源
□ 面板按"服务/资源"组织,第一屏能回答"行不行"

一句话原则

黄金信号看健康、RED 建基线、USE 查资源,
三套方法论用最少的指标,回答"服务到底行不行"。

小结

监控指标方法论的核心是"用最少的指标回答服务健康":黄金信号从用户视角看延迟/流量/错误/饱和度,RED 为每个服务建立 Rate/Errors/Duration 最小基线,USE 从资源视角定位利用率/饱和度/错误。落地记住五件事:服务层用 RED 统一基线、业务层用黄金信号做诊断、资源层用 USE 管容量、延迟看分布告警用 P95/P99、错误用错误率。当团队每个人都用同一套语言解读指标,监控就不再是"数字墙",而是"一眼可知服务是否正常、瓶颈在哪、还差多少容量"的共同判断力。

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「infra」更多文章

  1. 可观测性平台建设与组织落地:从工具堆砌到全员可用的自助观测体系
  2. 可观测性安全:数据脱敏、最小化采集与访问控制的纵深防线
  3. 遥测采样与摄取管道:从边缘采集到后端存储的数据治理架构