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 构成了一个从底层测量到顶层承诺的金字塔结构。理解这个层级关系,是设计告警降噪策略的前提。
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 的联动实践
在可观测性平台中,三者的联动关系决定了告警策略的优先级:
- SLI 采集层:通过 Prometheus、OpenTelemetry 等工具持续采集可用性、延迟等指标。
- SLO 计算层:基于 SLI 数据计算当前 SLO 达成状态和错误预算消耗。
- 告警触发层:当燃烧速率超过阈值时,触发不同优先级的告警(如 Page、Ticket、Info)。
- SLA 合规层:定期审计 SLO 达成情况,确保对外 SLA 承诺不被违反。
3.6 实践要点总结
- SLI 要少而精:每个服务选择 2-3 个最能反映用户体验的 SLI,避免指标爆炸。
- SLO 要可达成:基于历史数据设定 SLO,初期可设置宽松目标(如 99.9%),逐步收紧。
- SLA 要留余量:SLO 应比 SLA 严格至少一个数量级,为意外事件预留错误预算。
- 告警要基于燃烧速率:避免基于静态阈值告警,使用多窗口燃烧速率实现精准告警降噪。
推荐实践: 在可观测性平台中,为每个关键服务建立 SLO Dashboard,实时展示错误预算消耗、燃烧速率和剩余预算。当错误预算消耗超过 50% 时,触发告警预检;超过 80% 时,触发紧急响应流程。这种基于预算的告警策略,能有效减少 60% 以上的无效告警。