3. 误差预算概念
误差预算(Error Budget)是 SRE 实践中最具操作性的量化工具。它将服务所有者从“100% 可用性”的不可实现目标中解放出来,转而通过一个明确的、可消耗的“不可用额度”来平衡可靠性与创新速度之间的矛盾。
3.1 误差预算的定义
误差预算是指服务在 SLO 允许范围内可以发生的最大不可用时间或错误量。简单来说,如果服务承诺 99.9% 的可用性,那么剩余的 0.1% 就是该服务在 SLO 周期内可以“犯错”的预算。
核心思想: 误差预算不是“失败指标”,而是“创新燃料”。只要预算未耗尽,团队可以自由发布新功能、进行架构变更;一旦预算接近耗尽,必须暂停发布,优先投入可靠性工作。
| 概念 | 定义 | 示例(月度 99.9% SLO) |
|---|---|---|
| SLO | 服务承诺的可靠性目标 | 99.9% |
| SLI | 实际测量的可靠性指标 | 99.85% |
| 误差预算 | SLO 允许的最大不可用额度 | 100% - 99.9% = 0.1% |
| 已消耗预算 | 实际发生的不可用比例 | 100% - 99.85% = 0.15% |
| 剩余预算 | 误差预算 - 已消耗预算 | 0.1% - 0.15% = -0.05%(已超支) |
3.2 误差预算的计算公式
误差预算的计算基于 SLO 与 SLI 的差值,核心公式如下:
误差预算总量 = 1 - SLO(以小数表示)
已消耗预算 = 1 - SLI(以小数表示)
剩余预算 = 误差预算总量 - 已消耗预算
在实际运营中,通常将误差预算转换为时间单位或请求计数,以便团队直观理解:
| SLO | 月度误差预算(30天) | 季度误差预算(90天) | 年度误差预算(365天) |
|---|---|---|---|
| 99.9% | 43.2 分钟 | 2.16 小时 | 8.76 小时 |
| 99.95% | 21.6 分钟 | 1.08 小时 | 4.38 小时 |
| 99.99% | 4.32 分钟 | 12.96 分钟 | 52.56 分钟 |
实践建议: 在台账中同时记录“百分比预算”和“时间预算”两个维度。百分比用于趋势分析,时间用于团队沟通(例如:“我们本月还剩 20 分钟的故障额度”)。
3.3 误差预算的用途
误差预算在 SRE 运营中承担三大核心用途,构成可靠性决策的闭环:
- 发布决策门禁: 当剩余预算充足时,允许正常发布;当预算耗尽时,自动冻结发布,直到预算恢复。
- 可靠性投资优先级: 预算消耗速度反映服务脆弱性,消耗越快,越应优先投入架构加固、容量规划等工作。
- 故障复盘与改进: 每次故障消耗的预算量直接量化了故障影响,帮助团队判断是否需要升级响应机制。
3.4 误差预算台账上下文补充
在《服务画像构建》课程中,误差预算不是孤立指标,而是台账上下文的核心纽带。以下表格展示了误差预算如何与其他台账字段联动:
| 台账字段 | 与误差预算的关系 | 运营动作 |
|---|---|---|
| SLO 目标 | 决定预算总量 | 根据业务容忍度调整 SLO |
| SLI 实测值 | 计算已消耗预算 | 实时监控,触发告警 |
| 剩余预算 | 当前可用额度 | 发布决策、故障定级 |
| 预算消耗速率 | 反映服务脆弱性 | 触发架构加固优先级 |
| 预算恢复时间 | 从耗尽到恢复的时长 | 评估改进措施有效性 |
常见误区: 不要将误差预算视为“可以浪费的额度”。预算的合理使用方式是:在预算充足时主动进行风险可控的变更,而不是被动等待故障消耗预算。预算耗尽后的“冻结期”是团队最痛苦的时期,应尽力避免。
3.5 误差预算的消耗与恢复机制
误差预算并非静态指标,它在运营周期内动态变化。理解其消耗与恢复机制,是有效管理预算的前提:
- 消耗方式: 每次 SLI 未达到 SLO 的事件(如延迟超标、错误率上升、可用性下降)都会消耗预算。消耗量 = 事件持续时间 × 未达标幅度。
- 恢复方式: 预算按时间窗口滚动恢复。例如,月度预算在每月初重置;滑动窗口预算则随窗口推移逐步恢复。
- 超支后果: 预算耗尽后,服务进入“可靠性冻结期”,所有非关键变更暂停,团队全力投入稳定性修复。
关键公式: 误差预算消耗速率 = (1 - SLI) / (1 - SLO) × 100%。当该值持续 > 100% 时,表示预算正在加速耗尽,需立即干预。