2. SLI、SLO与Error Budget的关系:定义SLI、SLO,推导Error Budget = 1 - SLO,并说明三者如何联动

在SRE实践中,SLI(Service Level Indicator,服务水平指标)、SLO(Service Level Objective,服务水平目标)与Error Budget(错误预算)构成了可观测性与告警策略的三角基石。理解三者的定义与联动关系,是后续进行告警阈值调优与自动化触发策略设计的理论前提。

2.1 核心定义

术语 英文全称 定义 典型示例
SLI Service Level Indicator 对服务某个维度(如延迟、可用性、吞吐量)的量化测量值,通常表示为一段时间内的比率或分布。 过去1分钟内,请求延迟 ≤ 200ms 的比例
SLO Service Level Objective 为SLI设定的目标阈值,代表服务所有者承诺的可靠性水平,通常以百分比形式定义。 99.9% 的请求延迟 ≤ 200ms(月度统计)
Error Budget Error Budget 在SLO允许范围内,服务可以“出错”或“不可用”的最大时间或比例。它是SLO的互补值。 月度 Error Budget = 1 - 99.9% = 0.1% 的时间 ≈ 43.2 分钟
关键认知: SLI是测量值,SLO是目标值,Error Budget是容错空间。三者构成一个闭环反馈系统。

2.2 Error Budget的数学推导

Error Budget 的定义直接来源于 SLO 的互补关系。假设我们定义服务的“好事件”为满足 SLI 阈值的请求,“坏事件”为不满足 SLI 阈值的请求,则:

SLI = 好事件数量 / 总事件数量
SLO = 目标 SLI 值(例如 99.9%)

Error Budget = 1 - SLO

推导逻辑:

  • 如果 SLO 设定为 99.9%,意味着服务在统计周期内至少要有 99.9% 的时间或请求是“好”的。
  • 那么,最多允许的“坏事件”比例就是 100% - 99.9% = 0.1%。
  • 这个 0.1% 就是 Error Budget。它代表服务可以“犯错”而不违反 SLO 的额度。
实践要点: Error Budget 通常以时间(如分钟/小时)或请求数为单位。例如,月度 SLO 99.9% 对应的 Error Budget 约为 43.2 分钟(30天 × 24小时 × 60分钟 × 0.1%)。一旦消耗超过这个额度,团队必须停止新功能发布,优先进行稳定性修复。

2.3 三者联动关系:从测量到决策

SLI、SLO 与 Error Budget 并非孤立概念,它们构成了一个持续运行的反馈循环。下图展示了三者在 SRE 运维中的核心联动流程:

SLI、SLO 与 Error Budget 联动流程图 用户请求 SLI 测量 SLO 对比 Error Budget 计算 告警 / 发布决策 反馈闭环:调整发布节奏或修复 说明: 1. 实时测量 SLI 2. 与 SLO 目标对比 3. 计算剩余 Error Budget

2.4 联动机制详解

三者的联动可以拆解为以下四个关键步骤:

  1. 持续测量(SLI):系统实时采集请求延迟、错误率、吞吐量等指标,形成 SLI 时间序列。
  2. 目标对齐(SLO):将实时 SLI 与预设的 SLO 阈值进行对比,判断当前服务质量是否达标。
  3. 预算消耗(Error Budget):统计周期内,所有不满足 SLO 的“坏事件”累积消耗 Error Budget。剩余预算 = (1 - SLO) × 总时间 - 已消耗时间。
  4. 驱动决策:
    • 当 Error Budget 充足(剩余 > 50%):允许正常发布新功能。
    • 当 Error Budget 紧张(剩余 < 20%):触发告警,建议暂停发布,优先进行稳定性工作。
    • 当 Error Budget 耗尽(剩余 = 0%):触发紧急告警,必须立即回滚或修复。
常见误区: 不要将告警阈值直接设置为 SLO 边界。例如,SLO 为 99.9% 时,不应等到 Error Budget 耗尽才告警。正确的做法是设置多级告警阈值(如消耗 50%、75%、90% 时分别触发不同级别的告警),为运维响应预留时间窗口。

2.5 联动关系总结表

组件 角色 输入 输出 对告警策略的影响
SLI 测量者 原始监控数据 量化指标(如延迟P99) 决定告警的数据源和计算方式
SLO 目标制定者 SLI 历史数据 + 业务需求 百分比目标值 决定告警的基准线和严重等级
Error Budget 决策驱动者 SLO + 实际消耗 剩余容错额度 决定告警的触发时机和响应动作