1. SLO 基础概念:SLO、SLI、SLA 的定义与区别
在构建自动化故障恢复流程之前,必须首先理解三个核心度量指标:SLI(服务等级指标)、SLO(服务等级目标)和 SLA(服务等级协议)。它们是 SRE 体系中最基础、最重要的概念,直接决定了告警阈值、恢复优先级和故障响应策略。
1.1 核心定义
| 术语 | 英文全称 | 定义 | 典型示例 |
|---|---|---|---|
| SLI | Service Level Indicator | 服务质量的实际测量值,是客观可量化的指标 | 请求延迟 P99 = 120ms |
| SLO | Service Level Objective | 团队对 SLI 设定的目标阈值,是内部承诺 | P99 延迟 ≤ 200ms(99.9% 周期内) |
| SLA | Service Level Agreement | 与客户签订的法律约束性协议,含惩罚条款 | 月度可用性 ≥ 99.99%,否则赔偿 10% 月费 |
关键认知:SLI 是“测量值”,SLO 是“目标值”,SLA 是“合同值”。SRE 日常工作中主要围绕 SLI 和 SLO 进行监控与告警,SLA 更多由法务和商务团队管理。
1.2 三者的区别与联系
下图直观展示了 SLI → SLO → SLA 的层级关系与数据流向:
1.3 典型 SLI 分类与 SLO 设定示例
在实际 SRE 运维中,常见的 SLI 分为以下四大类,每类对应不同的 SLO 目标:
| SLI 类别 | 典型指标 | 常见 SLO 示例 | 测量窗口 |
|---|---|---|---|
| 可用性 | 请求成功率 / 正常运行时间 | 月度可用性 ≥ 99.99% | 30 天滚动窗口 |
| 延迟 | P50 / P95 / P99 响应时间 | P99 延迟 ≤ 200ms(99.9% 请求) | 5 分钟粒度,28 天窗口 |
| 吞吐量 | QPS / RPS / TPS | 峰值吞吐量 ≥ 10000 QPS | 1 分钟粒度,实时 |
| 错误率 | HTTP 5xx 占比 / 业务错误码 | 错误率 ≤ 0.1% | 10 分钟滚动窗口 |
实践要点:在自动化 Runbook 中,告警阈值通常设置为 SLO 的 75%~90%。例如 SLO 为 99.99% 可用性,则告警触发点设在 99.992%~99.997%,预留足够时间在 SLO 违约前完成故障恢复。
1.4 SLO 告警与故障恢复流程的关联
理解 SLI/SLO/SLA 后,就能清晰定位自动化 Runbook 在整个体系中的位置:
- SLI 持续采集 → 监控系统实时获取服务质量数据
- SLO 阈值比对 → 当 SLI 接近或超过 SLO 边界时触发告警
- 告警驱动 Runbook → 自动化故障恢复流程开始执行
- 恢复后验证 → 再次检查 SLI 是否回到 SLO 安全区间
- SLA 保护 → 快速恢复减少 SLA 违约风险
下图展示了从 SLI 采集到 Runbook 自动恢复的完整链路:
1.5 常见误区与避坑指南
常见误区 1:将 SLO 与 SLA 混为一谈。SLO 是内部工程目标,SLA 是外部法律承诺。SLO 违约不直接导致赔偿,但 SLA 违约会。自动化 Runbook 的首要目标是保护 SLO,间接保护 SLA。
常见误区 2:SLI 选择过多或过少。建议每个服务选择 3~5 个核心 SLI,过多增加监控成本,过少无法全面反映服务质量。优先选择与用户体验直接相关的指标。
常见误区 3:SLO 设定过于激进(如 99.9999%)。过高的 SLO 会导致告警频繁、Runbook 过度触发、运维成本激增。建议从 99.9% 开始,逐步优化。
1.6 本章小结
- SLI 是客观测量值,SLO 是内部目标,SLA 是外部协议
- SLO 通常比 SLA 严格 10%~50%,预留安全缓冲
- 自动化 Runbook 的触发条件基于 SLO 燃烧率,而非 SLA 违约
- 恢复流程完成后必须回检 SLI,确保 SLO 重新达标