1. SLO 与误差预算基础

在站点可靠性工程(SRE)体系中,SLO(Service Level Objective,服务等级目标)与Error Budget(误差预算)是驱动可靠性决策的两个核心杠杆。理解这两个概念,是构建 Prometheus 误差预算台账的前提。

1.1 什么是 SLO(服务等级目标)

SLO 是服务所有者为其服务设定的目标可靠性水平,通常以“在特定时间窗口内,满足某个 SLI(服务等级指标)阈值的比例”来表示。SLO 不是 100%,而是经过业务与成本权衡后确定的合理目标值。

概念 定义 示例
SLI 服务等级指标,可量化的服务质量度量 请求延迟 P99 ≤ 200ms
SLO 服务等级目标,SLI 的目标达标比例 过去 30 天内,99.9% 的请求延迟 P99 ≤ 200ms
SLA 服务等级协议,对外承诺的合同条款 若低于 99.9%,提供 10% 月度退款
关键区别:SLO 是内部目标,通常比 SLA 更严格(例如内部 SLO 为 99.95%,对外 SLA 为 99.9%),为可靠性留出缓冲空间。

1.2 什么是误差预算(Error Budget)

误差预算 = 1 − SLO。它表示在 SLO 时间窗口内,服务允许发生故障或性能降级的总时间/总请求比例。误差预算将“可靠性”转化为一个可消耗、可管理的量化资源。

  • 计算方式:若 SLO = 99.9%(30 天窗口),则误差预算 = 0.1% = 30 天 × 1440 分钟 × 0.1% ≈ 43.2 分钟。
  • 消耗机制:每次请求失败、延迟超标或错误响应,都会消耗误差预算。
  • 剩余监控:通过 Prometheus 持续计算当前已消耗的误差预算比例,判断服务是否处于安全区间。
误差预算消耗与剩余示意图(30天窗口,SLO=99.9%) 总时间:30天(43,200分钟) 初始误差预算:43.2分钟(0.1%) 已消耗:17.3分钟 剩余预算:25.9分钟 消耗率:40% 剩余率:60% 当剩余预算接近 0 时,应冻结新功能发布,优先投入稳定性建设

1.3 为什么误差预算对 SRE 至关重要

误差预算将可靠性从“模糊的追求”转变为可量化、可决策的工程指标。它在 SRE 实践中扮演以下关键角色:

  1. 平衡可靠性与创新速度:误差预算为“允许犯错”划定了明确边界。预算充足时,团队可以放心发布新功能;预算耗尽时,必须暂停发布并优先修复稳定性。
  2. 消除报警疲劳:传统监控中,任何异常都可能触发报警。误差预算机制只关注“是否消耗了预算”,避免对单次故障的过度反应。
  3. 驱动客观决策:基于误差预算的剩余比例,可以制定自动化的发布门禁、容量规划、故障优先级排序等策略。
  4. 对齐业务与工程目标:SLO 由业务需求驱动,误差预算将业务容忍度转化为工程团队的每日操作指标。
实战建议:在 Prometheus 中,使用 histogram_quantile 和 rate 函数组合,可以实时计算 SLI 达标率,进而推导出当前误差预算消耗量。这是后续章节构建“误差预算台账”的核心 PromQL 模式。

1.4 误差预算驱动的决策循环

误差预算不是静态数字,而是驱动 SRE 闭环流程的核心信号。下图展示了从 SLO 定义到自动化决策的完整链路:

误差预算驱动的 SRE 决策循环 1. 定义 SLO 2. 计算误差预算 3. 持续监控消耗 4. 自动化决策 反馈:调整 SLO 或发布策略 决策示例 • 预算剩余 > 50%:正常发布 • 预算剩余 20%~50%: 限制发布频率 • 预算剩余 < 20%: 冻结发布,全力修复 • 预算耗尽: 触发回滚或降级 • 持续耗尽: 重新评估 SLO 合理性
常见误区:不要将误差预算视为“可以浪费的额度”。误差预算的核心价值在于风险量化——它告诉你当前服务距离违反 SLO 还有多远,而不是鼓励你故意消耗预算。在 Prometheus 台账中,应同时关注“消耗速率”和“剩余比例”两个维度。