1. SLO 基础概念:服务等级目标
服务等级目标(Service Level Objective,SLO)是可靠性工程中用于量化服务健康度的核心指标。它不是一个简单的阈值,而是围绕用户真实使用体验设计的、可测量的目标值。理解 SLO 需要先厘清它与 SLA、SLI 的关系,以及它在整个可靠性体系中的定位。
1.1 核心定义:SLO、SLI、SLA 三角关系
在可观测性与可靠性工程中,三个概念构成一个层层递进的体系:
| 术语 | 全称 | 定义 | 典型示例 |
|---|---|---|---|
| SLI | Service Level Indicator | 服务等级指标,是衡量服务质量某一维度的原始测量值 | 请求延迟 P99、错误率、吞吐量 |
| SLO | Service Level Objective | 服务等级目标,是对 SLI 设定的目标阈值或范围 | P99 延迟 ≤ 200ms,每月 99.9% 的请求满足 |
| SLA | Service Level Agreement | 服务等级协议,是面向客户或业务方的合同承诺 | 月度可用性 ≥ 99.99%,否则赔付 |
关键区别:SLI 是原始数据,SLO 是内部目标,SLA 是外部承诺。SLO 通常比 SLA 更严格,为 SLA 留出安全缓冲。
1.2 SLO 在可靠性工程中的核心地位
SLO 不是简单的运维指标,而是连接技术决策与业务价值的桥梁。它在可靠性工程中扮演以下关键角色:
- 量化用户体验:将抽象的“系统稳定”转化为具体的延迟、错误率、可用性等可测量指标。
- 指导告警与响应:基于 SLO 燃烧速率(Burn Rate)设置告警,避免告警风暴,聚焦真正影响用户的事件。
- 驱动容量规划:通过 SLO 达成情况判断是否需要扩容或优化,而非仅凭资源利用率。
- 平衡可靠性与迭代速度:允许在 SLO 预算内进行风险操作,为快速迭代提供安全边界。
- 建立共同语言:让开发、运维、产品、业务团队围绕同一组目标协作。
实践建议:在采集作业平台中,SLO 应围绕“数据采集成功率”、“数据投递延迟 P99”、“接口可用性”等核心维度定义,而非监控系统自身的 CPU 或内存使用率。
1.3 SLO 的构成要素与定义模板
一个完整的 SLO 定义通常包含以下要素:
| 要素 | 说明 | 示例(采集作业平台) |
|---|---|---|
| SLI 名称 | 明确测量的指标维度 | 采集任务成功率 |
| 测量方式 | 如何采集和计算该指标 | 成功任务数 / 总任务数 × 100% |
| 目标阈值 | 期望达到的具体数值 | ≥ 99.9% |
| 时间窗口 | 统计周期(滚动窗口或日历窗口) | 30 天滚动窗口 |
| 排除条件 | 哪些情况不计入 SLO 计算 | 计划内维护窗口、客户端网络故障 |
1.4 SLO 的常见类型与选择策略
在实际的采集作业平台中,常见的 SLO 类型包括:
- 可用性 SLO:服务在给定时间窗口内正常响应请求的比例。例如:采集接口月度可用性 ≥ 99.9%。
- 延迟 SLO:请求在指定百分位内的响应时间。例如:P99 采集请求延迟 ≤ 500ms。
- 准确性 SLO:数据采集或处理结果的正确率。例如:采集数据字段完整率 ≥ 99.99%。
- 吞吐量 SLO:单位时间内成功处理的数据量。例如:单节点采集吞吐量 ≥ 10,000 条/秒。
常见误区:不要将 SLO 定义为“系统 CPU 使用率 < 80%”或“磁盘空间 > 20%”。这些是资源监控指标,不是用户可感知的服务质量指标。SLO 必须反映用户或下游系统的真实体验。
1.5 SLO 的燃烧速率概念
燃烧速率(Burn Rate)是 SLO 告警的核心机制,它衡量 SLO 预算消耗的速度:
燃烧速率 = 实际错误率 / 目标错误率
示例:
- SLO 目标:99.9%(错误预算 = 0.1%)
- 当前窗口实际错误率:1%
- 燃烧速率 = 1% / 0.1% = 10x
含义:按当前速率,错误预算将在 1/10 的时间窗口内耗尽
基于燃烧速率的告警策略可以避免传统固定阈值告警的缺陷,让告警更精准地反映 SLO 风险。