什么是错误预算?
在站点可靠性工程(SRE)中,错误预算指的是服务在仍然满足服务级别目标(SLO)的前提下,所能容忍的"不可靠"程度。如果你承诺 99.9% 的可用性,就等于默认允许 0.1% 的宕机时间——这 0.1% 就是你的错误预算。这款通用计算器可以把任意 SLO 目标和时间周期换算成可容忍的最大宕机分钟数,再减去你已经消耗的宕机时间,告诉你还剩多少预算。
使用方法
以百分比形式填写你的目标 SLO(例如 99.9),选择预算周期(周、月、季度或年),再输入该周期内已经发生的宕机分钟数。计算器会给出错误预算总额、已消耗的宕机时间,以及以分钟和百分比两种形式表示的剩余预算。
计算公式详解
首先把周期换算成分钟:\( \text{周期分钟数} = \text{天数} \times 24 \times 60 \)。错误预算为 \( (1 - \text{SLO}) \times \text{周期分钟数} \),其中 SLO 用小数表示(99.9% → 0.999)。最后,\( \text{剩余预算} = \text{错误预算} - \text{已用宕机时间} \)。如果剩余值为负,说明你已经把预算用光,并突破了 SLO。
$$ B_{\text{rem}} = \left(1 - \frac{\text{SLO (\%)}}{100}\right) \cdot P - \text{Downtime (min)} $$
$$ \text{where}\quad \left\{ \begin{aligned} P &= \text{Period (days)} \times 24 \times 60 \end{aligned} \right. $$
实例演算
假设你的 SLO 为 99.9%,周期为 30 天的一个月。该周期共有 \( 30 \times 24 \times 60 = 43{,}200 \) 分钟。错误预算为 \( (1 - 0.999) \times 43{,}200 = 43.2 \) 分钟。如果你已经经历了 10 分钟的宕机,那么剩余预算为 \( 43.2 - 10 = 33.2 \) 分钟,约占总预算的 76.85%。
常见问题
多少 SLO 才算合适?这取决于具体的服务。99.9%(俗称"三个九")在 Web 应用中很常见;对于关键基础设施,目标可能定在 99.99% 甚至更高。SLO 越高,留给你的错误预算就越少。
剩余预算为负意味着什么?说明你已经超出了允许的宕机时间,违反了 SLO。SRE 团队通常会冻结风险较高的发布,直到预算恢复为止。
计划内维护算在内吗?只有当你把维护窗口也算作宕机时才计入。许多团队会把提前公告的维护从 SLO 计算中排除。