首页/云/可观测性速查/错误预算:用可量化的代价管理稳定性
监控体系与方法40 条

错误预算:用可量化的代价管理稳定性

错误预算 = 1 − SLO。以 30 天 99.9% 的 SLO 为例,每月允许约 43 分钟不可用;预算充足可加速发布,预算耗尽则优先修复稳定性。

可观测性速查云更新于 2026-10-13

错误预算是什么

错误预算是把 SLO 换算成允许失败的额度:可用性目标 99.9% 意味着 30 天里可以损失约 0.1% 的时间,也就是 43 分钟左右。它的作用是把稳定性争论变成可结算的数字:预算还有剩余就允许承担风险加快发布,预算耗尽就该停下来做可靠性工作。

30 天周期允许的不可用时长

SLO预算比例每月允许不可用
99%1%7 小时 12 分钟
99.9%0.1%43 分钟 12 秒
99.95%0.05%21 分钟 36 秒
99.99%0.01%4 分钟 19 秒

预算消耗进度

预算消耗进度
# 当前窗口不可用比例(30 天滚动)
1 - (sum(rate(http_requests_total{code!~"5.."}[30d]))
       / sum(rate(http_requests_total[30d])))

# 除以预算比例得到消耗进度,结果大于 1 表示已耗尽
# 0.1% 预算对应分母 0.001,按自己的 SLO 调整

典型使用场景

  • 发布决策:预算充足时加快迭代节奏,把风险留给可控的变更
  • 故障复盘量化:用预算消耗量衡量一次故障的严重程度,替代主观判断
  • 跨团队沟通:把可靠性讨论变成数字对账,减少能不能发的争论
  • 投入排序:连续几个周期预算耗尽,说明稳定性欠债需要立项处理
  • 灰度验收:观察灰度期间的预算消耗速率,判断是否继续放量
错误预算只有写进发布流程才有意义:常见做法是剩余低于 25% 时限制高风险变更,耗尽时冻结功能发布并优先修复。
统计口径要提前约定:哪些失败计入预算(服务端错误、超时、降级),哪些不计(计划内维护、客户端参数错误),否则每个周期都会重新争吵一次。

落地要点

  • 与发布节奏绑定:把剩余额度写进发布检查清单,超支即触发评审
  • 定期对账:每个周期复盘预算的消耗构成,区分计划内风险与意外故障
  • 分级设定:核心链路与内部工具的 SLO 不同,预算不可一概而论
  • 与链路联动:预算异常消耗时用 trace_id 定位到具体故障批次
预算要能被看见才有效:把消耗进度做成看板并放在值班最常看的位置,比写在文档里更容易被执行。

易错点

  • 只统计严重故障:长时间轻微劣化被忽略,预算会被显著低估
  • 预算耗尽后没有约定动作:冻结或评审机制缺失,指标就沦为报表
  • 对不同服务套用同一个 SLO:核心支付链路与内部工具的用户容忍度不同,需分级设定
  • 把预算当成必须用完的额度:为消耗而消耗会造成不必要风险,预算是上限而不是目标

数据来源与参考

  • Google SRE Workbook · Error Budget Policy
  • Google SRE Book 第 3 章 Embracing Risk
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌