news 2026/7/17 0:24:21

SRE 实战手册(四)|错误预算:把 SLO 变成“共识机制“

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SRE 实战手册(四)|错误预算:把 SLO 变成“共识机制“

SRE 实战手册(四)|错误预算:把 SLO 变成"共识机制"

对应课程「04|错误预算:达成稳定性目标的共识机制」。这是 SRE 最巧妙的设计,没有之一。

一、为什么需要"错误预算"这个东西?

第 03 讲我们定了 SLO:结账成功率 ≥ 99.9%。数字有了,但马上冒出一个组织问题

研发说"我这周要发三个大版本";SRE 说"你这周已经快把稳定性搞挂了,别发了"。
—— 谁说了算?凭什么?

传统做法靠"拍脑袋"或"职级压人",结果是研发和 SRE 长期对立。错误预算(Error Budget)的精妙之处在于:把"稳定性"翻译成一个双方都认同的、会动态变化的"余额",让机制而不是人去裁决。

二、错误预算到底是什么

一句话:错误预算 = 1 − SLO 目标。它就是"我们被允许犯错的额度"。

我们 SLO 是 99.9%,所以:

错误预算率 = 1 − 0.999 = 0.001 (即允许 0.1% 的失败)

换算成"绝对次数"更容易理解。假设一个月结账 1 千万次:

允许的错误次数 = 0.001 × 10,000,000 = 10,000 次/月

这 10,000 次,就是本月"随便花"的额度。花完了,就得收紧;没花完,就可以放开手脚发版。

三、用代码算清楚预算状态

仓库里的deploy/error_budget.py提供了纯数学模式,直接看一眼余额:

python3 error_budget.py math--total1000000--errors600--slo0.999

输出(节选):

{ "error_rate": 0.0006, # 实际错误率 0.06% "burn_rate": 0.6, # 燃烧速率 0.6×(<1,安全) "allowed_errors": 1000.0, # 本月允许 1000 次 "budget_consumed": 600, # 已花 600 次 "budget_remaining_pct": 0.4 # 还剩 40% }

解读:当前错误率 0.06%,燃烧速率 0.6×,预算还剩 40%——状态健康,研发这个月可以正常发版。

顺带一提,这个error_budget.py最初一版是用 AI 编程工具 AtomCode 以无头模式(headless)自动生成的,我再做了生产化打磨。这正是"SRE + AI 编程"的现实工作流:让 AI 出初稿,人来把关工程正确性。

四、燃烧速率(Burn Rate):比"还剩多少"更重要

光看"还剩 40%"会漏掉一个致命信号:钱是不是正在被一把火烧掉?

燃烧速率定义:

燃烧速率 = 当前错误率 / 错误预算率
  • 燃烧速率 = 1×:按当前速度,刚好一个月烧完全部预算(正常)。
  • 燃烧速率 = 14.4×:1 小时烧掉 2% 的月度预算(快燃)→ 必须立刻 Page。
  • 燃烧速率 = 6×:6 小时烧掉 5% 的月度预算(慢燃)→ 需工单跟进。

(14.4 = 2% ÷ (1h/720h);6 = 5% ÷ (6h/720h),来自 Google SRE Workbook 的多窗口燃烧速率法。)

deploy/slo_rules.yml里这两条告警就是这么来的(生产用 Prometheus;本实验由等价的sre_monitor.py实现同样的 14.4×/6× 判定并向 On-Call 台发 webhook):

-alert:CheckoutBudgetBurnFastexpr:job:checkout_errors:rate1h>(14.4 * 0.001)# 1h 错误率超 1.44%for:2mlabels:{severity:critical}-alert:CheckoutBudgetBurnSlowexpr:job:checkout_errors:rate6h>(6 * 0.001)# 6h 错误率超 0.6%for:10mlabels:{severity:warning}

五、错误预算真正解决的问题:发布闸门

这才是它作为"共识机制"的落点。课程强调:错误预算是研发和 SRE 之间的"契约",规则要提前写死:

预算状态动作
剩余 > 0 且燃烧速率正常正常发版,鼓励快速迭代
预算告急(如 < 10%)冻结非必要发布,集中力量稳定性
预算已耗尽只发修复稳定性的变更,暂停业务需求发布
预算长期用不完说明 SLO 定得太松,可收紧目标提体验

注意:预算不是"惩罚工具",而是"风险额度"。用完了不是研发挨骂,而是双方坐下来决定"这个月要不要为稳定性踩刹车"。这是把对抗变成协作的关键。

六、常见坑

  • 坑 1:把错误预算当 KPI 扣钱→ 团队开始隐瞒故障、粉饰 SLI,预算机制彻底失效。
  • 坑 2:只算"还剩多少",不看燃烧速率→ 慢火烧了三天才发现,预算早空了。
  • 坑 3:预算耗尽后没人有权冻结发布→ 机制没牙齿,等于摆设。
  • 坑 4:SLO 定太低,预算永远用不完→ 失去约束意义,沦为形式主义。

七、小结与思考题

  • 错误预算 = 1 − SLO,是把稳定性变成"可协商余额"的机制。
  • 燃烧速率比"剩余多少"更能预警,快燃 14.4×、慢燃 6× 是业界经验值。
  • 预算是契约不是惩罚;用完了由机制(而非职级)决定暂停发版。

思考题:你们团队现在"能不能发版"由谁决定?如果引入"错误预算耗尽即冻结发布"这条规则,你们的组织里,谁有权按下那个暂停键?这个权力现在在不在该在的人手里?

下一篇我们用真实电商案例,把"定 SLO 时还要考虑哪些因素"讲透。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 0:07:57

深圳市2026年技术先进型服务企业认定申请指南

深圳市2026年技术先进型服务企业认定时间&#xff1a;2026年7月16日--2026年8月21日&#xff08;截至18:00&#xff09;&#xff0c;目前正处于申报窗口期。该认定主要针对从事服务外包、信息技术及知识流程外包的企业&#xff0c;认定后可享受企业所得税按15%税率征收等优惠政…

作者头像 李华
网站建设 2026/7/17 0:00:12

DeepSeek V4替换Codex底座模型的实践与优化

1. 为什么选择用DeepSeek V4替换Codex的底座模型去年我在开发一个智能代码补全工具时&#xff0c;发现Codex的默认底座模型在复杂业务逻辑场景下表现不尽如人意。经过多次测试对比&#xff0c;DeepSeek V4在以下几个关键指标上展现出明显优势&#xff1a;代码补全准确率&#x…

作者头像 李华
网站建设 2026/7/16 23:59:19

多AGV协同路径规划:时间窗模型原理与C++工程实现

1. 项目概述与核心价值 最近在做一个AGV&#xff08;自动导引运输车&#xff09;集群调度系统的仿真项目&#xff0c;其中路径规划模块是整个系统的核心。在实际的仓储或生产车间里&#xff0c;AGV不是孤立的&#xff0c;它们共享通道、路口等资源&#xff0c;如果规划不当&…

作者头像 李华