2. SLO 核心概念:SLI、SLO、误差预算的定义与关系

在构建可靠性工程体系时,SLI(服务等级指标)、SLO(服务等级目标)与误差预算(Error Budget)构成了最核心的三角关系。理解这三者的定义及其相互作用,是落地 SLO 误差预算台账的前提。

2.1 核心定义

术语 英文全称 定义 类比
SLI Service Level Indicator 服务质量的直接可测量指标,如请求延迟、错误率。 汽车仪表盘上的“速度表”
SLO Service Level Objective 对 SLI 设定的目标阈值,如“99.9% 的请求延迟 < 200ms”。 “限速 120 km/h”的标牌
误差预算 Error Budget 在 SLO 允许范围内,服务可以不可靠的时间或次数。 “超速罚单额度”
关键公式: 误差预算 = 1 - SLO(例如:SLO 为 99.9%,则误差预算为 0.1%)。在滚动窗口期(如 30 天)内,服务不可用的总时长不能超过此预算。

2.2 三角关系:SLI → SLO → 误差预算

三者构成一个闭环决策链路:

  1. 定义 SLI:选择最能反映用户体验的测量指标。
  2. 设定 SLO:基于业务容忍度,为 SLI 设定一个可接受的目标值。
  3. 计算误差预算:SLO 确定后,误差预算即被锁定。
  4. 驱动决策:当误差预算消耗过快时,团队应暂停新功能发布,优先投入稳定性建设。
SLI、SLO、误差预算三角关系 SLI 指标 SLO 目标 误差预算 误差预算 = 1 - SLO,消耗速度决定发布节奏

2.3 常见的 SLI 指标类型(四大黄金信号)

Google SRE 经典著作中定义了四个核心 SLI 类型,被称为“四大黄金信号”。在实际工程中,我们通常从这四个维度选取 2~3 个作为核心 SLI。

指标类型 测量对象 典型 SLI 定义示例 常见采集方式
延迟 请求响应时间 99% 的请求延迟 ≤ 200ms(基于 1 分钟窗口) Prometheus Histogram / p99 分位
错误率 失败请求比例 HTTP 5xx 错误率 ≤ 0.1%(基于 5 分钟窗口) HTTP 状态码计数 / 日志聚合
吞吐量 请求处理速率 每秒请求数(RPS)≥ 基线值的 90% Prometheus Rate / 流量监控
饱和度 资源使用程度 CPU 使用率 ≤ 80% 或队列深度 ≤ 100 Node Exporter / 资源监控
实践建议: 对于大多数 Web 服务,延迟和错误率是必须定义的 SLI;吞吐量和饱和度通常作为辅助指标,用于排查容量问题。

2.4 四大 SLI 指标的关系与选择策略

这四个指标并非孤立存在,它们之间存在因果或关联关系。例如:

  • 饱和度升高 → 延迟增加 → 错误率上升:这是最常见的故障传导链。
  • 吞吐量骤降:可能由上游依赖延迟或自身错误率飙升引起。
四大 SLI 指标关联与故障传导链 饱和度 ↑ 延迟 ↑ 错误率 ↑ 吞吐量 ↓ 资源瓶颈 触发点 用户体验 直接受损 业务容量 下降

2.5 误差预算的工程意义

误差预算不仅是数学计算,更是团队决策的“货币”。以下是其在工程落地中的核心作用:

  • 发布节奏控制:当误差预算充足时,团队可以快速迭代;当预算即将耗尽时,应冻结发布,优先修复稳定性。
  • 故障响应优先级:消耗误差预算越快的故障,修复优先级越高。
  • 跨团队对齐:SLO 和误差预算为开发、运维、产品团队提供了统一的可靠性语言。
常见误区: 不要将 SLO 设定为 100%。100% 的 SLO 意味着零误差预算,团队将无法进行任何变更或发布,反而会降低系统韧性。通常建议 SLO 设定在 99.9% ~ 99.99% 之间。

2.6 小结:从概念到台账的映射

在后续章节中,我们将基于这些核心概念构建SLO 误差预算台账。台账中的每一行记录,本质上就是:

服务名称 | SLI 类型 | SLO 目标 | 滚动窗口 | 当前消耗 | 剩余预算 | 状态