4. SLI 重定义方法论:USE 方法、RED 方法、四步重定义法

在 SRE 实践中,SLI 的选择直接决定了 SLO 的准确性与可操作性。错误的 SLI 会导致“指标好看,系统却挂了”的假阳性,或“指标报警,业务却正常”的假阴性。本章系统讲解三种主流的 SLI 重定义方法论:USE 方法(资源视角)、RED 方法(服务视角)以及四步重定义法(通用流程),帮助你在不同场景下精准定位并重构 SLI。

4.1 USE 方法:资源饱和与错误检测

USE 方法(Utilization、Saturation、Errors)由 Brendan Gregg 提出,主要用于基础设施资源层的 SLI 定义。其核心思想是:对于每一个资源(CPU、内存、磁盘、网络),分别检查其利用率、饱和度和错误率。

维度 定义 典型 SLI 示例 阈值参考
U (Utilization) 资源被占用的平均时间比例 CPU 使用率、内存占用率、磁盘 IOPS 利用率 < 80% 为健康,> 90% 需关注
S (Saturation) 资源无法及时服务的排队程度 CPU 运行队列长度、磁盘 IO 等待队列、网络缓冲区积压 队列长度持续 > 0 表示饱和
E (Errors) 资源操作失败的次数或比例 磁盘读写错误计数、网络丢包率、内存 ECC 错误 任何非零错误都应视为 SLI 降级
实战建议:USE 方法最适合裸金属、虚拟机、容器节点的监控。当应用出现延迟抖动时,先检查 USE 三要素,往往能快速定位到资源瓶颈。

4.2 RED 方法:请求维度的黄金三角

RED 方法(Rate、Errors、Duration)由 Tom Wilkie 提出,专为微服务与 API 网关设计。它将 SLI 聚焦在请求的生命周期上,是构建服务级别指标(Service Level Indicators)最直接的方法。

  • R (Rate) — 请求速率:单位时间内处理的请求数(RPS/QPS)。用于衡量服务负载与吞吐量。
  • E (Errors) — 错误率:请求失败的占比(HTTP 5xx、业务错误码)。直接反映服务正确性。
  • D (Duration) — 延迟分布:请求响应时间的百分位值(p50、p95、p99)。反映服务响应速度。
RED vs USE 对比:USE 回答“资源够不够?”,RED 回答“服务好不好?”。在分层监控中,通常上层用 RED,下层用 USE,形成完整的可观测性栈。
RED 方法:服务层 SLI 黄金三角 R — Rate 请求速率 (RPS/QPS) E — Errors 错误率 (%) D — Duration 延迟 (p50/p95/p99) RED 方法适用场景 • HTTP/gRPC API 服务 • 消息队列消费者/生产者 • 数据库查询接口(按查询类型聚合)

4.3 四步重定义法:从原始指标到精准 SLI

USE 和 RED 提供了 SLI 的分类框架,但实际生产中的指标往往混杂、冗余、噪声多。四步重定义法提供了一套可执行的流程,将原始指标逐步提炼为可用于 SLO 计算的精确 SLI。

步骤一:识别(Identify)

列出系统所有可观测的原始指标。包括基础设施指标(CPU、内存)、中间件指标(队列深度、连接数)、应用指标(请求数、错误码、延迟)。此阶段不设限,目标是穷举。

步骤二:筛选(Filter)

根据以下原则剔除无效指标:

  • 业务相关性:该指标是否直接影响用户体验?
  • 可测量性:指标是否可稳定采集,且误差在可接受范围内?
  • 可区分性:指标能否区分“正常”与“异常”?
  • 可操作性:指标降级时,团队是否有明确的响应动作?

步骤三:聚合(Aggregate)

将筛选后的指标按时间窗口和维度进行聚合。常见聚合方式:

聚合类型 说明 示例
时间窗口聚合 将原始数据点按 1m/5m/1h 窗口计算均值或百分位 原始延迟 → 5 分钟窗口 p99 延迟
维度聚合 按服务、实例、区域、用户类型等维度分组 所有实例错误率 → 按可用区聚合的错误率
比率聚合 将数值转换为比率,便于设定 SLO 错误请求数 / 总请求数 → 错误率

步骤四:验证(Validate)

使用历史数据回测 SLI 的有效性:

  • 假阳性测试:SLI 报警时,是否真的发生了业务受损?
  • 假阴性测试:业务受损时,SLI 是否一定能捕捉到?
  • 稳定性测试:SLI 在正常运行时,波动是否在可接受范围内?
常见陷阱:跳过“验证”步骤直接上线 SLI,是导致 SLO 误差预算失效的首要原因。务必使用至少 2-4 周的历史数据进行回测,确认 SLI 与业务体验的关联性。
四步重定义法:从原始指标到精准 SLI ① 识别 穷举原始指标 不设限、全量采集 ② 筛选 业务相关性 可测量/可区分 ③ 聚合 时间窗口/维度 比率转换 ④ 验证 假阳性/假阴性 历史回测 验证不通过 → 返回步骤②或③重新筛选/聚合 输出:可纳入 SLO 误差预算的精确 SLI • 每个 SLI 附带明确的采集方式、聚合规则、验证记录 • 与业务 KPI 的关联性已通过历史数据确认

4.4 方法论选择矩阵

在实际项目中,应根据监控对象和团队成熟度选择合适的方法论。下表总结了三种方法的适用场景与产出物:

方法论 适用层级 核心维度 典型产出 SLI 推荐场景
USE 基础设施层 利用率、饱和度、错误 CPU 利用率 < 80%、磁盘队列长度 = 0 物理机、虚拟机、容器节点、网络设备
RED 服务/应用层 速率、错误、延迟 请求错误率 < 1%、p99 延迟 < 200ms 微服务、API 网关、消息队列消费端
四步重定义法 全层级(通用流程) 识别-筛选-聚合-验证 经过验证的精确 SLI 定义文档 新系统接入 SLO、现有 SLI 重构、指标治理
最佳实践:推荐组合使用。先用四步重定义法建立 SLI 治理流程,再根据监控对象选择 USE(资源层)或 RED(服务层)作为具体指标框架。例如:对数据库集群,底层用 USE 监控磁盘和 CPU,上层用 RED 监控查询延迟和错误率。