3. SLO基础:SLI、SLO与错误预算的定义与关系

在SRE与平台工程实践中,服务水平目标(SLO)是连接用户感知与运维决策的核心锚点。要理解SLO,必须先厘清其上下游的两个关键概念:服务水平指标(SLI)和错误预算(Error Budget)。三者构成一个闭环反馈系统,驱动着自助服务平台的稳定性设计。

3.1 服务水平指标(SLI)

SLI 是对服务某个特定维度的量化测量,通常表示为一段时间内的良好事件占比。SLI 是 SLO 的原始数据来源,必须可观测、可采集、可计算。

3.1.1 常见 SLI 类型

维度 典型指标 计算公式
可用性 请求成功率 成功请求数 / 总请求数
延迟 P95 / P99 响应时间 延迟 ≤ 阈值 的请求数 / 总请求数
吞吐量 每秒请求数(RPS) 总请求数 / 时间窗口(秒)
错误率 HTTP 5xx 占比 5xx 响应数 / 总响应数
饱和度 CPU / 内存使用率 已使用资源 / 总资源容量
平台工程提示: 在自助服务平台中,建议为每个服务定义 4~6 个核心 SLI。过多 SLI 会增加采集和告警噪音,过少则可能遗漏关键故障模式。

3.2 服务水平目标(SLO)

SLO 是为 SLI 设定的目标阈值,代表服务所有者承诺在一段较长时间(通常为 28 天或 30 天)内,SLI 必须达到的最低水平。SLO 是团队与用户之间的隐性契约。

3.2.1 SLO 的典型表达

# 示例:API 服务的 SLO 定义
SLI: 请求延迟 P99 ≤ 200ms
SLO: 在 30 天滚动窗口内,99.9% 的请求满足上述 SLI

# 解读:30 天内,最多允许 0.1% 的请求延迟超过 200ms

3.2.2 SLO 的常见级别

  • 99.9%(三个九):适用于内部工具、非关键业务服务。
  • 99.95%(三个九半):适用于大多数面向用户的生产服务。
  • 99.99%(四个九):适用于核心支付、实时通信等关键链路。
  • 99.999%(五个九):通常仅用于电信级或金融核心系统,成本极高。
常见误区: 不要盲目追求“四个九”或“五个九”。SLO 越高,对架构冗余、监控精度、故障恢复速度的要求呈指数级增长。平台工程应帮助团队根据业务价值选择合理的 SLO。

3.3 错误预算(Error Budget)

错误预算 是 SLO 的衍生概念,定义为 1 - SLO。它表示在 SLO 时间窗口内,服务允许失败的总时间或总请求量。错误预算将稳定性从“可靠”转变为“可量化风险”。

3.3.1 错误预算的计算

# 假设 SLO = 99.9%,时间窗口 = 30 天
总时间 = 30 天 × 24 小时 × 60 分钟 × 60 秒 = 2,592,000 秒
错误预算 = 总时间 × (1 - 0.999) = 2,592,000 × 0.001 = 2,592 秒 ≈ 43.2 分钟

# 含义:30 天内,服务最多可以不可用 43.2 分钟。

3.4 SLI、SLO 与错误预算的关系

三者构成一个闭环驱动模型:

  1. SLI 是测量基础:没有准确的 SLI,SLO 就是空中楼阁。
  2. SLO 是目标边界:将 SLI 数据与目标对比,判断服务是否达标。
  3. 错误预算是决策燃料:剩余错误预算的多少,直接决定团队能否进行风险操作(如上线新功能、变更配置)。
核心公式: 错误预算消耗率 = (1 - 当前 SLI) / (1 - SLO) × 100%。当消耗率接近 100% 时,应触发冻结变更或启动应急响应。
SLI → SLO → 错误预算 闭环驱动模型 SLI 测量 延迟 / 成功率 / 吞吐量 SLO 目标 99.9% / 99.99% 错误预算 1 - SLO = 允许失败量 数据输入 计算得出 消耗预算 → 冻结变更 / 触发应急 → 影响 SLI 闭环要点 SLI 提供数据 → SLO 设定边界 → 错误预算指导行动 → 行动反作用于 SLI

3.5 三者在自助服务平台中的实践映射

在平台工程场景下,SLI、SLO 和错误预算需要被产品化,嵌入到开发者的自助服务流程中:

概念 平台中的体现 开发者可见性
SLI 内置监控面板,自动采集请求延迟、错误率 服务详情页实时展示
SLO 服务创建时模板化配置,支持多级目标 仪表盘显示达标状态(绿色/红色)
错误预算 预算消耗进度条,与 CI/CD 流水线集成 预算不足时自动阻止高风险发布
自助服务平台中的 SLI / SLO / 错误预算集成 数据采集层 Prometheus / 指标采集 日志 / 事件提取 Trace 分布式追踪 计算与存储层 SLI 聚合计算引擎 SLO 达标率评估 错误预算消耗跟踪 决策与展示层 开发者仪表盘 CI/CD 门禁控制 告警与通知 平台工程将 SLI/SLO/错误预算固化为自助服务能力,开发者无需手动计算即可获得稳定性决策依据

3.6 关键原则与避坑指南

  • SLI 要少而精:每个服务选择最能反映用户体验的 1~2 个核心 SLI,避免指标爆炸。
  • SLO 要可达成:初始 SLO 建议基于历史数据设定,留出 10%~20% 的余量。
  • 错误预算要可视化:在平台仪表盘上实时展示预算消耗进度,让团队对风险一目了然。
  • 不要用 SLO 做绩效考核:SLO 是决策工具,不是惩罚工具。用 SLO 考核会导致团队设置过于保守的目标。
平台工程最佳实践: 在自助服务平台中,为每个服务模板预置 SLI 采集规则、SLO 推荐值和错误预算告警阈值。开发者只需选择服务等级(如 Gold/Silver/Bronze),平台自动完成配置。