首页/云/可观测性速查/RED 方法:Rate、Errors、Duration
监控体系与方法40 条

RED 方法:Rate、Errors、Duration

面向请求型服务(微服务、API 网关、Web 应用)的三指标方法:请求速率、错误比例、耗时分布;少量面板即可覆盖服务健康与版本变更效果。

可观测性速查云更新于 2026-10-13

RED 方法是什么

RED 是面向请求型服务的最小监控集合:Rate 请求速率、Errors 错误比例、Duration 耗时分布。它由 Tom Wilkie 提出,主张服务的健康度只需这三个指标就能覆盖,任何一次发布或故障变化都会在这三条曲线上体现,特别适合微服务与 API 网关这类请求驱动的组件。

基本信息

适用对象受理请求的服务:HTTP/gRPC/RPC、消息队列消费者
三个指标Rate 请求速率 / Errors 错误比例 / Duration 耗时分布
常用维度service、route(路径模板)、method、status
配套方法资源侧用 USE 方法(利用率、饱和度、错误)

典型使用场景

  • 服务面板模板:同一套三个查询复制到所有服务,看板维护成本极低
  • 发布效果验证:发布后比较 Rate 是否下降、Errors 是否抬升、Duration 是否偏移
  • 接口级定位:按 route 拆分后能直接看到是哪个接口拖慢了整体
  • 容量规划:Rate 的长期增长曲线与实例数对比,判断扩容时机
  • SLO 度量:Errors 与 Duration 直接构成成功率与延迟两类 SLI

三个指标的查询要点

指标推荐函数注意点
Raterate() 或 irate()用 rate 做告警更平稳,irate 适合看瞬时变化
Errorssum(rate()) 后做除法只算 5xx 会漏业务失败,需按接口语义补充
Durationhistogram_quantile 配合 le 聚合不能对分位数再做平均,需从桶重算

RED 三件套查询

RED 三件套查询
# Rate:每秒请求数(按服务聚合)
sum by (service) (rate(http_requests_total[5m]))

# Errors:5xx 请求占比
sum by (service) (rate(http_requests_total{code=~"5.."}[5m]))
  / sum by (service) (rate(http_requests_total[5m]))

# Duration:P99 耗时(先聚合桶再算分位)
histogram_quantile(0.99, sum by (service, le) (rate(http_request_duration_seconds_bucket[5m])))

按 route 拆分后的读法

现象方向下一步
某 route 的 Rate 下降上游调用减少或路由被摘除查网关配置与上游改动记录
某 route 的 Errors 抬升该接口自身或独占依赖异常取 trace_id 查链路,定位下游
整体 Duration 上抬公共依赖变慢(DB、缓存、下游)对比各 route,看是否同时劣化
仅高峰时段劣化容量不足或连接池耗尽结合饱和度与线程池指标判断
RED 聚焦请求结果,回答不慢不坏;遇到慢的问题时再配合 USE 方法检查资源侧瓶颈,两者是互补关系而非竞争关系。
把错误只定义为 5xx 会漏掉业务级失败:HTTP 200 但响应体业务码非零、部分成功、静默降级都需要按接口语义补充错误标签。

与黄金指标和 USE 的关系

RED 可以看作黄金指标面向请求型服务的落地版本:Rate 对应流量,Errors 对应错误,Duration 对应延迟,缺的是偏资源侧的饱和度,因此要靠 USE 补上。三个指标的取数都来自同一份请求埋点,只要在应用侧统一指标名与标签口径,就能用同一套查询模板覆盖所有服务。

落地时的常见约定

  • 指标命名固定为 <域>_requests_total 与 <域>_request_duration_seconds,避免每个团队各起一套名字
  • 状态标签使用标准状态码,不要自造二值标签,否则无法按错误类型细分
  • 路由标签用路径模板而不是原始 URL,既控制基数又保留可读性
  • 错误定义写入接口契约:业务失败用独立标签体现,不要混进 5xx 计数
  • 看板与告警共用同一份查询表达式,避免两处口径随时间漂移
三个指标的窗口长度要与告警持续时长匹配:五分钟窗口配五到十分钟的持续判断,通常能在灵敏度与抖动之间取得平衡。

异常组合的排查方向

组合可能原因排查方向
Rate 降、Errors 升上游摘流或大量请求失败查网关配置与上游变更记录
Errors 升、Duration 平部分请求快速失败,如连接被拒查依赖可用性与连接池上限
Duration 升、Errors 平依赖变慢但仍在超时阈值内看链路定位具体下游耗时
三者同时劣化公共依赖或基础设施故障先看饱和度,再查数据库与网络
三个指标要组合起来看:单条曲线的变化方向往往有多种解释,组合判断才能快速收窄假设范围。

易错点

  • 错误只算 5xx:业务失败被漏统计,SLO 与告警都会失真
  • Duration 只看平均耗时:长尾被平均掉,P95/P99 才是用户实际感受
  • route 标签未归一化:/order/88123 这类带 ID 的路径会让基数飙升,需在采集或应用侧做路径模板化
  • 无实例维度:只看聚合曲线无法区分单节点异常与整体劣化,优先保留 instance 标签

数据来源与参考

  • Tom Wilkie · The RED Method(GrafanaCon 2018 演讲,Grafana Labs 博客)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌