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 持续计算当前已消耗的误差预算比例,判断服务是否处于安全区间。
1.3 为什么误差预算对 SRE 至关重要
误差预算将可靠性从“模糊的追求”转变为可量化、可决策的工程指标。它在 SRE 实践中扮演以下关键角色:
- 平衡可靠性与创新速度:误差预算为“允许犯错”划定了明确边界。预算充足时,团队可以放心发布新功能;预算耗尽时,必须暂停发布并优先修复稳定性。
- 消除报警疲劳:传统监控中,任何异常都可能触发报警。误差预算机制只关注“是否消耗了预算”,避免对单次故障的过度反应。
- 驱动客观决策:基于误差预算的剩余比例,可以制定自动化的发布门禁、容量规划、故障优先级排序等策略。
- 对齐业务与工程目标:SLO 由业务需求驱动,误差预算将业务容忍度转化为工程团队的每日操作指标。
实战建议:在 Prometheus 中,使用
histogram_quantile 和 rate 函数组合,可以实时计算 SLI 达标率,进而推导出当前误差预算消耗量。这是后续章节构建“误差预算台账”的核心 PromQL 模式。
1.4 误差预算驱动的决策循环
误差预算不是静态数字,而是驱动 SRE 闭环流程的核心信号。下图展示了从 SLO 定义到自动化决策的完整链路:
常见误区:不要将误差预算视为“可以浪费的额度”。误差预算的核心价值在于风险量化——它告诉你当前服务距离违反 SLO 还有多远,而不是鼓励你故意消耗预算。在 Prometheus 台账中,应同时关注“消耗速率”和“剩余比例”两个维度。