2. SLO 基础概念:SLI、SLO 与错误预算

在构建基于 Runbook 联动的自愈流程之前,必须统一团队对可靠性度量语言的理解。SLI、SLO 与错误预算构成了可靠性工程的三角基石,三者之间的联动关系直接决定了自动化决策的触发条件与恢复目标。

2.1 服务水平指标(SLI)

SLI(Service Level Indicator) 是对服务某个特定维度的质量进行量化的原始测量值。SLI 必须是可采集、可计算、可对比的数值序列。

维度 常见 SLI 示例 采集方式
可用性 请求成功率(200 / 总请求) 负载均衡器日志 / 应用探针
延迟 P95 响应时间 ≤ 200ms APM 工具 / 服务端埋点
吞吐量 每秒请求数(RPS) 网关指标 / 时序数据库
错误率 5xx 占比 < 1% 日志聚合 / 监控系统
饱和度 CPU 使用率 < 80% 基础设施监控
选型原则:SLI 必须与用户体验强相关。例如,对于 API 网关,优先选择“端到端请求成功率”而非“单个节点存活状态”,因为前者直接反映用户能否获得正确响应。

2.2 服务水平目标(SLO)

SLO(Service Level Objective) 是为 SLI 设定的目标阈值,通常以时间窗口内的达标百分比表示。SLO 是团队与业务之间的可靠性契约。

  • 目标窗口:通常为 28 天(滚动窗口)或 30 天(日历窗口)。
  • 达标阈值:常见值包括 99.9%(三个九)、99.95%、99.99%(四个九)。
  • 多级 SLO:同一服务可设置多个 SLO,例如“核心写入接口 SLO = 99.99%”与“批量查询接口 SLO = 99.9%”。
关键认知:SLO 不是“尽力而为”的期望,而是触发自动化流程的硬边界。当 SLI 持续低于 SLO 时,系统必须进入自愈或降级模式。

2.3 错误预算(Error Budget)

错误预算 是 SLO 的衍生概念,定义为 100% - SLO 所对应的不可用时间或错误次数。错误预算为团队提供了“允许出错的量化额度”。

错误预算 = (1 - SLO) × 总时间窗口

示例:
SLO = 99.9%(三个九)
时间窗口 = 28 天 = 40320 分钟
错误预算 = 0.1% × 40320 = 40.32 分钟

即:在 28 天内,服务最多允许 40.32 分钟处于不可用状态。
SLO 28 天错误预算(分钟) 典型场景
99.9% 40.32 内部工具、非关键业务
99.95% 20.16 标准在线服务
99.99% 4.03 核心支付、实时通信

2.4 三者的关系与自愈触发逻辑

SLI、SLO 与错误预算构成了一个闭环反馈系统。在自愈流程中,错误预算的消耗速率是 Runbook 联动的核心决策依据。

SLI · SLO · 错误预算 三角关系 SLI 服务水平指标 原始测量值 SLO 服务水平目标 目标阈值 错误预算 Error Budget 允许出错额度 对比 计算 自愈触发逻辑 当 SLI 持续低于 SLO → 错误预算快速消耗 → 消耗速率超过阈值 → Runbook 联动自愈 反馈调整 SLO 或扩容

2.5 错误预算消耗速率与自愈决策

在自愈流程设计中,不仅关注错误预算的值,更关注其消耗速率。消耗速率决定了自动化响应的紧急程度。

  • 正常消耗:消耗速率 ≤ 预算 / 窗口时间,系统保持正常状态。
  • 快速消耗:消耗速率超过线性预期,触发 Runbook 预检 流程。
  • 临界消耗:错误预算剩余 < 20%,触发 自动降级或扩容 流程。
  • 耗尽:错误预算归零,触发 最高优先级自愈 或人工介入。
常见误区:不要等到错误预算耗尽才采取行动。当消耗速率在 1 小时内超过线性预算的 2 倍时,就应该启动 Runbook 联动。自愈的目标是“在预算耗尽前恢复”,而非“在耗尽后补救”。

2.6 概念对比总结

概念 本质 单位 在自愈中的角色
SLI 原始测量 百分比 / 毫秒 / 计数 自愈流程的输入信号
SLO 目标契约 百分比(如 99.9%) 自愈流程的触发边界
错误预算 量化容错 分钟 / 请求次数 自愈流程的优先级依据