4. SLO 与错误预算基础:SLI 定义、SLO 目标设定、错误预算计算、燃烧率概念
在云原生可观测性与可靠性工程中,服务等级目标(SLO)与错误预算(Error Budget)是连接运维与产品决策的核心量化工具。本章将系统拆解 SLI 定义、SLO 设定、错误预算计算及燃烧率机制,为后续 Helm 面板化呈现提供数据基础。
4.1 服务等级指标(SLI)定义
SLI(Service Level Indicator)是对服务某个维度质量的直接测量值,通常表示为一段时间内的比率或百分比。常见的 SLI 类型包括:
| SLI 类型 | 典型指标 | 测量方式 |
|---|---|---|
| 可用性 | 请求成功率 | 成功请求数 / 总请求数 |
| 延迟 | P95 / P99 响应时间 | 特定百分位下的响应时间阈值 |
| 吞吐量 | 每秒请求数(RPS) | 单位时间处理请求数 |
| 错误率 | 5xx 占比 | 5xx 响应数 / 总响应数 |
| 饱和度 | CPU / 内存使用率 | 资源使用量 / 总容量 |
SLI 选择原则:优先选择与用户体验直接相关的指标,避免选择内部实现细节(如 GC 暂停时间)作为 SLI,除非它能直接映射到用户感知的延迟或错误。
以下 SVG 展示了 SLI 从原始指标到可观测性数据的转化链路:
4.2 SLO 目标设定
SLO(Service Level Objective)是团队为 SLI 设定的目标阈值,通常表示为“在滚动窗口内达到 X% 的达标率”。SLO 不是 SLA(服务等级协议),SLO 是内部承诺,SLA 是对外的法律约束。
4.2.1 SLO 设定步骤
- 确定关键用户旅程:选择对用户体验影响最大的核心链路。
- 选择对应 SLI:为每个用户旅程匹配 1-2 个 SLI。
- 设定目标值:基于历史数据与业务容忍度,设定合理阈值。
- 定义合规窗口:通常使用 28 天或 30 天滚动窗口。
- 建立错误预算:根据 SLO 计算可容忍的错误量。
SLO 设定示例:
“在 30 天滚动窗口内,99.9% 的 API 请求响应时间低于 200ms(P95)。”
这意味着在 30 天内,最多允许 0.1% 的请求超过 200ms。
“在 30 天滚动窗口内,99.9% 的 API 请求响应时间低于 200ms(P95)。”
这意味着在 30 天内,最多允许 0.1% 的请求超过 200ms。
4.2.2 常见 SLO 目标参考
| SLO 等级 | 可用性目标 | 每月最大不可用时间 | 典型场景 |
|---|---|---|---|
| 99% (两个9) | 99.0% | 7.2 小时 | 内部工具、开发环境 |
| 99.9% (三个9) | 99.9% | 43.2 分钟 | 生产 API、Web 应用 |
| 99.99% (四个9) | 99.99% | 4.32 分钟 | 金融交易、核心数据库 |
| 99.999% (五个9) | 99.999% | 25.9 秒 | 电信、关键基础设施 |
4.3 错误预算计算
错误预算(Error Budget)是 SLO 的反向度量,表示在 SLO 合规窗口内允许的最大失败量。计算公式如下:
错误预算 = 总请求数 × (1 - SLO 目标)
示例:
- 30 天内总请求数:10,000,000
- SLO 目标:99.9%
- 错误预算 = 10,000,000 × (1 - 0.999) = 10,000 次失败请求
错误预算的消耗速度决定了团队是否需要暂停新功能发布、优先进行稳定性投入。以下 SVG 展示了错误预算的消耗与燃烧过程:
4.4 燃烧率概念
燃烧率(Burn Rate)衡量错误预算消耗的速度,是早期预警的核心指标。燃烧率定义为:
燃烧率 = 实际错误率 / 允许错误率
示例:
- SLO 目标:99.9%(允许错误率 0.1%)
- 实际错误率:0.5%
- 燃烧率 = 0.5% / 0.1% = 5x
这意味着错误预算的消耗速度是预期的 5 倍。
4.4.1 燃烧率预警阈值
| 燃烧率 | 预警级别 | 响应时间 | 典型动作 |
|---|---|---|---|
| 1x - 2x | 信息 | 24 小时内 | 记录、观察趋势 |
| 2x - 5x | 警告 | 1 小时内 | 排查根因、准备回滚 |
| 5x - 10x | 严重 | 15 分钟内 | 立即回滚、触发护栏 |
| > 10x | 紧急 | 立即 | 自动回滚、通知 On-Call |
4.4.2 多窗口燃烧率策略
单一窗口的燃烧率可能因短期波动产生误报。推荐使用多窗口策略:
- 短窗口(1 小时):检测突发性故障,燃烧率阈值较高(如 > 10x)。
- 中窗口(6 小时):检测持续性退化,燃烧率阈值中等(如 > 5x)。
- 长窗口(3 天):检测慢性性能下降,燃烧率阈值较低(如 > 2x)。
燃烧率陷阱:不要仅依赖单一窗口的燃烧率。短窗口可能因流量波动产生假阳性,长窗口可能掩盖突发故障。建议至少使用两个不同时间窗口的燃烧率进行联合判断。
4.5 SLI / SLO / 错误预算 / 燃烧率关系总结
以下表格总结了四个核心概念的关系与作用:
| 概念 | 定义 | 单位 | 作用 |
|---|---|---|---|
| SLI | 服务质量的实际测量值 | 比率 / 毫秒 / 计数 | 提供原始数据 |
| SLO | SLI 的目标阈值 | 百分比(如 99.9%) | 设定可靠性目标 |
| 错误预算 | SLO 允许的最大失败量 | 计数 / 时间 | 量化可容忍的故障 |
| 燃烧率 | 错误预算消耗速度 | 倍数(如 5x) | 早期预警与决策 |
在 Helm 面板化呈现中,我们将把上述指标映射为 Prometheus 查询、Grafana 面板与告警规则,实现 SLO 的可视化与自动化回滚护栏。下一节将深入 PromQL 查询与面板设计。