← 返回题目列表

SLI、SLO 和错误预算分别是什么?

高频 困难 第 14 / 26 题 更新于 2026/10/02
可观测性SLISLO错误预算
学习 AI 实战项目

简化版

SLI 是用户可感知可靠性的量化指标,SLO 是某时间窗口内的目标,错误预算是允许的不可靠份额。它把“要多可靠”转成工程与发布决策,但 SLO 不是对外法律承诺,SLA 才通常包含合同后果。

详细版

先定义有效事件、好事件、窗口和数据源,例如 30 天内有效支付请求 99.95% 在 1 秒内成功。错误预算为 1-SLO;通过多窗口燃烧率告警,预算消耗过快时冻结高风险发布并优先可靠性工作。

SLI 要从用户边界测量,排除项必须有限且公开;低流量服务同时看事件数和持续时间。滚动窗口适合持续决策,日历窗口适合结算,两者不能混用口径。

完整版教学

一、三个概念的关系

SLI = good events / valid events
SLO = target(SLI, time window)
error budget = 1 - SLO

记忆钩子:SLI 是尺子,SLO 是目标线,错误预算是允许越线的空间。

二、好事件怎样定义

HTTP 200 不一定是业务成功;支付应以明确成功状态和时延判断。用户取消、恶意请求是否进入分母要事先定义,不能事故后临时排除来美化数据。

数据源优先靠近用户边界,并有去重和缺失检测。采样日志不适合直接作为精确 SLI 分母。

三、数字算例

30 天有 1000 万次有效请求,SLO 99.9%,允许坏事件为 10,000,000×0.1%=10,000。若一天已坏 5000 次,就消耗了整月一半预算,不能只看当前成功率仍接近 99.9%。

SLO允许错误率每百万请求允许坏事件
99%1%10,000
99.9%0.1%1,000
99.99%0.01%100

四、燃烧率告警

燃烧率是当前错误率除以允许错误率。99.9% SLO 下观察到 1% 错误,燃烧率为 10;若持续不变,预算会以正常速度十倍消耗。

短窗口高阈值发现急性事故,长窗口较低阈值发现持续退化;双窗口同时满足可减少瞬时噪声。

五、窗口选择

滚动 30 天每天更新,适合发布决策;日历月易于业务结算,但月初和月末行为不同。窗口和时区必须固定,并处理迟到数据修正。

低流量服务单个错误会造成巨大百分比波动,可结合绝对事件数、合成监控和时间可用性。

六、错误预算策略

预算健康时允许正常创新;快速消耗时收紧发布、增加评审并处理可靠性债务。策略由业务和工程共同约定,不能让平台单方面用预算惩罚团队。

计划维护是否计入预算必须事先定义;用户仍受影响时,随意排除会让 SLO 失去可信度。

多个 SLI 不应简单平均;可为可用性和延迟分别设 SLO,或按关键旅程定义联合好事件。

预算报表要展示数据完整性,采集缺口期间不能默认所有请求都是好事件。

七、常见误区与追问

  • 误区:SLO 越高越好。 成本可能急剧上升且超过用户需要。
  • 误区:SLO 就是 SLA。 SLA 通常是外部合同与赔付承诺。
  • 误区:只看月末是否达标。 快速燃烧需要提前响应。
  • 误区:事故后可以调整分母。 排除规则必须预先、透明且稳定。
  • 追问:多用户旅程怎么定义? 分步骤 SLI 加端到端关键旅程 SLI。
  • 追问:无流量时可用性怎么算? 避免假设 100%,结合合成探测与口径说明。
  • 追问:预算耗尽怎么办? 按既定策略限制风险变更并优先恢复可靠性。

八、加强记忆

用“好事件/有效事件”定义 SLI,在固定窗口设可实现的 SLO,剩余份额就是错误预算。用燃烧率提前发现消耗,用预算策略平衡发布和可靠性;口径从用户边界出发,排除、低流量和迟到数据都要预先治理。