2. SLO 基础概念:SLO、SLI、SLA 的定义与区别

在构建可观测性与告警自愈体系之前,必须准确理解三个核心术语:SLI(服务等级指标)、SLO(服务等级目标)和 SLA(服务等级协议)。它们是整个可靠性工程的度量基石,也是 Runbook 触发与自愈策略制定的依据。

2.1 核心定义

术语 英文全称 定义 典型示例
SLI Service Level Indicator 服务质量的直接度量指标,通常是某个时间窗口内的比率或数值。 请求成功率 99.9%、P99 延迟 200ms
SLO Service Level Objective 团队为 SLI 设定的目标阈值,是内部承诺的可靠性边界。 月度请求成功率 ≥ 99.95%
SLA Service Level Agreement 与客户签订的法律/商业协议,包含未达标的惩罚条款。 年度可用性 ≥ 99.9%,否则赔偿 10% 月费
记忆口诀:SLI 是测量值,SLO 是目标值,SLA 是合同值。SLO 通常比 SLA 更严格,为团队留出“燃烧预算”的缓冲空间。

2.2 三者的关系与层级

下图展示了从原始指标到商业承诺的完整链路:

SLI → SLO → SLA 层级关系 SLI 服务等级指标 (原始测量值) SLO 服务等级目标 (内部承诺阈值) SLA 服务等级协议 (商业合同条款) 定义目标 合同化 关键缓冲原则 SLO 阈值通常比 SLA 严格 1~2 个 9,为告警响应与自愈争取时间 示例:API 网关 • SLI:过去 5 分钟请求成功率 = 99.85% • SLO:月度请求成功率 ≥ 99.95% • SLA:年度可用性 ≥ 99.9% • 当前 SLI 已低于 SLO,触发告警 示例:数据库查询 • SLI:P99 查询延迟 = 320ms • SLO:P99 延迟 ≤ 200ms • SLA:P99 延迟 ≤ 500ms(合同) • 当前 SLI 超出 SLO,但未触及 SLA

2.3 关键区别对比

维度 SLI SLO SLA
性质 技术度量 技术承诺 商业合同
受众 工程师、监控系统 工程团队、管理层 客户、法务、销售
严格程度 无阈值,仅测量 严格(内部高要求) 宽松(法律底线)
时间窗口 实时/近实时 滚动窗口(月/季) 合同周期(年/季)
未达标后果 无直接后果 触发告警、On-Call 赔偿、罚款、法律风险
变更频率 随系统变化 按迭代调整 合同期内固定

2.4 在 Runbook 自愈中的角色

在《Runbook 联动 SLO 告警自愈闭环》课程中,三者分别承担不同职责:

  • SLI:作为告警的输入信号,持续采集并送入评估引擎。
  • SLO:作为告警的触发阈值,当 SLI 偏离 SLO 时启动 Runbook。
  • SLA:作为风险边界,当 SLO 持续恶化接近 SLA 时升级告警级别。
实战要点:在定义 Runbook 触发条件时,应使用 SLO 而非 SLA。例如:“当错误预算剩余不足 20% 时触发自愈流程”,而不是“当 SLA 即将违约时再行动”。前者为自愈留出充足时间,后者往往为时已晚。

2.5 常见误区

误区 正确理解
SLI 越多越好 应聚焦用户核心体验的少数关键指标(通常 3~5 个)
SLO 等于 SLA SLO 应比 SLA 严格,为内部留出燃烧预算
SLA 是技术指标 SLA 本质是商业条款,由法务和业务部门主导
所有服务都需要 SLA 内部服务通常只需要 SLO,只有面向客户的服务才需要 SLA
注意:不要将 SLA 直接用作告警阈值。SLA 的违约成本极高,一旦触发往往已造成客户影响。正确的做法是将 SLO 作为告警边界,并利用错误预算(Error Budget)机制提前干预。