2. SLO 基础概念:SLI、SLO 与错误预算
在构建告警驱动的自愈体系之前,必须统一三个核心度量术语:SLI(服务水平指标)、SLO(服务水平目标)和错误预算。它们构成了从原始观测到运维决策的完整链路。
2.1 服务水平指标 (SLI)
SLI 是对服务某个特定维度的量化测量,通常表示为一段时间内的好事件比率。常见的 SLI 类型包括:
| 维度 | 典型指标 | 计算公式 |
|---|---|---|
| 可用性 | 请求成功率 | 成功请求数 / 总请求数 |
| 延迟 | 快速请求占比 | 延迟 ≤ 阈值请求数 / 总请求数 |
| 吞吐量 | 每秒请求数 | 总请求数 / 时间窗口 |
| 数据完整性 | 写入成功率 | 成功写入事件数 / 总写入事件数 |
定义原则:SLI 必须可观测、可计算、与用户体验强相关。避免选择难以采集或业务含义模糊的指标。
2.2 服务水平目标 (SLO)
SLO 是为 SLI 设定的目标阈值,是服务健康状态的承诺边界。例如:“99.9% 的请求在 200ms 内完成”。SLO 通常以 “n 个 9” 的形式表达:
| SLO 值 | 允许故障时间/月 | 允许故障时间/年 |
|---|---|---|
| 99% | 7.20 小时 | 3.65 天 |
| 99.9% | 43.2 分钟 | 8.76 小时 |
| 99.99% | 4.32 分钟 | 52.56 分钟 |
| 99.999% | 25.9 秒 | 5.26 分钟 |
常见误区:SLO 不是“越高越好”。过高的 SLO 会导致运维成本爆炸、发布冻结、告警疲劳。合理的 SLO 应基于用户容忍度和业务成本平衡。
2.3 错误预算
错误预算 = 1 − SLO。它表示在 SLO 周期内允许发生错误的总量。例如:99.9% SLO 对应 0.1% 的错误预算。错误预算的核心价值在于:
- 量化风险:将抽象的“稳定性”转化为具体的数字。
- 驱动决策:错误预算充足时允许快速发布;预算耗尽时冻结变更,专注稳定性。
- 触发告警:当错误预算消耗速度超过预期时,触发告警甚至自愈流程。
2.4 三者的关系
SLI、SLO 与错误预算构成一个闭环反馈系统。下图展示了从原始数据到运维动作的完整链路:
2.5 错误预算消耗与告警触发
错误预算的消耗速率比值更重要。下图展示了基于消耗速率的告警分级策略:
实践要点:
- SLI 选择不超过 3 个核心维度,避免指标爆炸。
- SLO 设定时预留 10%-20% 的缓冲,避免频繁触发告警。
- 错误预算消耗速率告警比值告警更早发现问题。
- 自愈流程应优先消耗错误预算较低的维度。