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 三者的关系与层级
下图展示了从原始指标到商业承诺的完整链路:
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)机制提前干预。