3. SLO 基础概念:服务等级目标(SLO)、服务等级指标(SLI)、服务等级协议(SLA)的定义与关系

在可观测性平台工程中,SLO 监控是连接业务价值与基础设施稳定性的核心桥梁。要构建有效的告警降噪体系,首先必须精准理解三个基础概念:SLI(服务等级指标)、SLO(服务等级目标)和SLA(服务等级协议)。它们构成了从“测量”到“承诺”的完整链路。

3.1 核心定义

概念 英文全称 核心定义 关键特征
SLI Service Level Indicator 服务等级指标,是对服务质量某个维度的直接量化测量值。 可测量、可采集、通常为比率或延迟值
SLO Service Level Objective 服务等级目标,是为 SLI 设定的目标阈值或范围,是团队内部承诺。 可达成、可监控、是告警与决策的依据
SLA Service Level Agreement 服务等级协议,是服务提供方与用户之间的正式合同承诺,通常附带惩罚条款。 法律约束、对外承诺、通常比 SLO 宽松
关键认知: SLI 是“测量什么”,SLO 是“目标是多少”,SLA 是“承诺了什么”。在可观测性实践中,SLO 是团队内部驱动改进的核心工具,而 SLA 更多是商业与法务层面的约束。

3.2 三者的关系与层级

SLI、SLO、SLA 构成了一个从底层测量到顶层承诺的金字塔结构。理解这个层级关系,是设计告警降噪策略的前提。

SLI / SLO / SLA 金字塔关系图 SLI / SLO / SLA 金字塔关系 SLI — 服务等级指标 可用性 = 成功请求数 / 总请求数 | 延迟 P99 = 200ms SLO — 服务等级目标 月度可用性 ≥ 99.9% | P99 延迟 ≤ 300ms SLA — 服务等级协议 月度可用性 ≥ 99.0% | 违约赔偿 10% 定义目标 对外承诺 内部驱动 SLO 比 SLA 更严格 外部约束 SLA 是合同底线

3.3 典型 SLI 类型与选择原则

选择正确的 SLI 是 SLO 工程的第一步。常见的 SLI 类型包括:

  • 可用性 (Availability):服务正常响应请求的时间比率。通常表示为 成功请求数 / 总请求数。
  • 延迟 (Latency):服务响应请求的速度。常用百分位指标如 P50、P95、P99。
  • 吞吐量 (Throughput):单位时间内处理的请求数量,如 RPS(每秒请求数)。
  • 错误率 (Error Rate):返回错误响应的请求比例,如 HTTP 5xx 比率。
  • 饱和度 (Saturation):服务资源被使用的程度,如 CPU 使用率、队列深度。
SLI 选择黄金法则: 优先选择与用户体验直接相关的指标。例如,对于 API 网关,P99 延迟比平均延迟更能反映尾部延迟对用户的影响。避免选择难以测量或与用户感知脱节的指标。

3.4 SLO 的设定与燃烧速率

SLO 不是随意设定的数字,它需要基于历史数据、业务容忍度和技术能力综合确定。设定 SLO 后,燃烧速率 (Burn Rate) 是告警降噪的核心工具。

概念 定义 示例
SLO 目标 SLI 需要达到的目标值 月度可用性 ≥ 99.9%
错误预算 SLO 允许的最大不可用时间 月度 99.9% 可用性 → 错误预算 = 43.2 分钟
燃烧速率 错误预算消耗的速度(相对于时间窗口) 1x 燃烧速率 = 在 SLO 窗口内刚好消耗完预算
多窗口燃烧速率告警 结合短窗口和长窗口的燃烧速率检测 1 小时窗口燃烧速率 ≥ 14.4x 触发紧急告警
常见误区: 不要将 SLO 设定得过于激进(如 99.999%),这会导致频繁的无效告警和团队疲劳。SLO 应反映用户可接受的服务水平,而非理论上的完美状态。通常,SLO 应比 SLA 严格 1-2 个 9。

3.5 SLA、SLO、SLI 的联动实践

在可观测性平台中,三者的联动关系决定了告警策略的优先级:

  1. SLI 采集层:通过 Prometheus、OpenTelemetry 等工具持续采集可用性、延迟等指标。
  2. SLO 计算层:基于 SLI 数据计算当前 SLO 达成状态和错误预算消耗。
  3. 告警触发层:当燃烧速率超过阈值时,触发不同优先级的告警(如 Page、Ticket、Info)。
  4. SLA 合规层:定期审计 SLO 达成情况,确保对外 SLA 承诺不被违反。
SLI / SLO / SLA 联动流程图 SLI → SLO → SLA 联动流程 SLI 采集 可用性 / 延迟 / 错误率 SLO 计算 错误预算 / 燃烧速率 告警决策 Page / Ticket / Info SLA 审计 合规报告 / 赔偿计算 反馈优化 SLI 采集策略

3.6 实践要点总结

  • SLI 要少而精:每个服务选择 2-3 个最能反映用户体验的 SLI,避免指标爆炸。
  • SLO 要可达成:基于历史数据设定 SLO,初期可设置宽松目标(如 99.9%),逐步收紧。
  • SLA 要留余量:SLO 应比 SLA 严格至少一个数量级,为意外事件预留错误预算。
  • 告警要基于燃烧速率:避免基于静态阈值告警,使用多窗口燃烧速率实现精准告警降噪。
推荐实践: 在可观测性平台中,为每个关键服务建立 SLO Dashboard,实时展示错误预算消耗、燃烧速率和剩余预算。当错误预算消耗超过 50% 时,触发告警预检;超过 80% 时,触发紧急响应流程。这种基于预算的告警策略,能有效减少 60% 以上的无效告警。