4.4 KiB
4.4 KiB
tags, create time
| tags | create time | ||||
|---|---|---|---|---|---|
|
2026-05-18 00:50 |
Error Budget 深度解析 — 稳定性与速度的平衡杠杆
概述
Error Budget(错误预算)是 SRE 体系中最具实操价值的概念之一。它将抽象的"SLO 目标"转化为具体的可消耗量,为产品迭代的快慢提供量化依据。更多背景见 ../04-SRE实践/01-SLI-SLO-SLA详解。
计算方式
可用率 = (总时间 - 故障时间) / 总时间 × 100%
错误预算 = 1 - SLO
SLO = 99.9% → 错误预算 = 0.001
每月可容忍故障 = 30 × 24 × 60 × 0.001 = 43.2 分钟
每周可容忍故障 = 7 × 24 × 60 × 0.001 = 10.1 分钟
SLO = 99.99% → 错误预算 = 0.0001
每月可容忍故障 ≈ 4.3 分钟
[!tip] 理解错误预算的本质
错误预算不是"允许出错的额度",而是"允许不完美的空间"。它回答了一个关键问题:在当前的可靠性要求下,团队还能冒多大的风险?
基于错误预算的决策矩阵
flowchart TD
Ratio["错误预算使用率 = 已消耗 / 总预算"]
Ratio -- "< 50%" --> Green["🟢 绿灯阶段<br/>预算充足: 可以大胆发布<br/>新功能、尝试激进方案<br/>常规发布节奏"]
Ratio -- "50~90%" --> Yellow["🟡 黄灯阶段<br/>预算紧张: 收紧发布频率<br/>增加人工审查<br/>暂停非关键功能开发"]
Ratio -- "\> 90%" --> Orange["🟠 橙灯阶段<br/>严重不足: 冻结发布<br/>专注稳定性修复<br/>全员 On-Call"]
Ratio -- "\> 100%" --> Red["🔴 红灯阶段<br/>预算耗尽: 禁止所有<br/>功能性变更<br/>SLO 事故复盘"]
style Green fill:#c8e6c9
style Yellow fill:#fff9c4
style Orange fill:#ffe0b2
style Red fill:#ffcdd2
各阶段的典型行动清单
| 阶段 | 功能发布 | 技术债处理 | 人员安排 |
|---|---|---|---|
| 🟢 绿灯 | 正常节奏 | 按计划推进 | 按需 On-Call |
| 🟡 黄灯 | 减少 50%,需额外审批 | 启动专项清理 | 增加第二响应人 |
| 🟠 橙灯 | 冻结(仅 Hotfix) | 全员投入修复 | 负责人值班 |
| 🔴 红灯 | 全面冻结 | Postmortem + 专项改进 | 全员待命 |
错误预算告警联动
# Prometheus 告警规则示例
groups:
- name: error-budget
rules:
- alert: ErrorBudgetBurnRateHigh
expr: |
sum(rate(http_requests_total{status=~"5.."}[1h])) /
sum(rate(http_requests_total[1h])) > 0.001
for: 1h
labels:
severity: warning
budget_phase: yellow
annotations:
summary: "错误预算消耗加速"
message: "当前错误率 {{ $value }}% > SLO 阈值 0.1%"
- alert: ErrorBudgetExhausted
expr: |
(sum(rate(http_requests_total{status=~"5.."}[24h])) /
sum(rate(http_requests_total[24h]))) >= 0.001
labels:
severity: critical
budget_phase: red
annotations:
summary: "错误预算已耗尽!"
message: "本月 SLO 已破线,冻结非紧急变更"
[!info] Multi-window Burn Rate Alerting
Google SRE 推荐的做法是使用两个窗口来检测预算消耗速度:
- 短窗口(1h/5m):检测突发大量错误的情况(立即触发黄灯)
- 长窗口(半天/一天):检测慢性缓慢泄漏的情况(防止温水煮青蛙)
只有当两个窗口同时超限时才亮红灯,这样可以避免误报导致的警报疲劳。
补充:多服务 Error Budget 管理策略
当集群中有几十上百个服务时,不能把所有预算分配给同一个 SLO。推荐分层策略:
| 层级 | 示例 | 预算分配 |
|---|---|---|
| P0 核心链路 | 支付、登录 | 99.99% → 极低容错 |
| P1 重要服务 | 订单、搜索 | 99.95% → 中等容错 |
| P2 一般服务 | 后台管理、报表 | 99.9% → 较高容错 |
[!tip] Error Budget 分配实战技巧
将月度预算均匀摊分到每周作为基线。例如月预算 43 分钟 → 每周预算约 10 分钟。这比月末一次性清算更有操作性——你可以在周报中直接看到本周预算余量。
关联笔记
- ../04-SRE实践/01-SLI-SLO-SLA详解 — SLI/SLO/SLA 三层模型基础
- ../04-SRE实践/03-SRE心法与事故复盘 — Blameless Postmortem 模板
- ../hhs/MS/05-部署运维/02-Kubernetes — K8s HPA 弹性伸缩支撑 SLO 保障