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 与错误预算构成一个闭环反馈系统。下图展示了从原始数据到运维动作的完整链路:

SLI → SLO → 错误预算 → 运维决策 闭环 原始观测数据 日志 / 指标 / 追踪 SLI 好事件比率 SLO 目标阈值 错误预算 剩余额度 运维决策 发布 / 回滚 / 自愈 核心公式:错误预算 = 总事件数 × (1 − SLO) − 已消耗错误事件数 当错误预算耗尽时,触发告警 → 自愈流程 → 恢复 SLI → 重新积累错误预算

2.5 错误预算消耗与告警触发

错误预算的消耗速率比值更重要。下图展示了基于消耗速率的告警分级策略:

错误预算消耗速率与告警分级 0% 50% 100% 安全区 正常消耗,无需干预 预警区 触发告警,准备自愈 危险区 立即执行自愈流程 告警触发条件:错误预算消耗速率 > 预期速率 × 1.5 持续 5 分钟 自愈动作:自动扩容 / 重启异常实例 / 回滚最近变更 / 切换流量
实践要点:
  • SLI 选择不超过 3 个核心维度,避免指标爆炸。
  • SLO 设定时预留 10%-20% 的缓冲,避免频繁触发告警。
  • 错误预算消耗速率告警比值告警更早发现问题。
  • 自愈流程应优先消耗错误预算较低的维度。