1. SLO 基础概念:服务等级目标、SLI 与错误预算
在构建可观测性体系与 SRE 实践时,服务等级目标(SLO)是连接用户真实体验与运维动作的核心纽带。本章将系统梳理 SLO 的定义、SLI 与 SLO 的关系,以及错误预算这一关键管理工具,为后续 Grafana 看板设计奠定理论基础。
1.1 服务等级目标(SLO)定义
SLO 是服务提供方为其用户承诺的、在一定时间窗口内应达到的可靠性水平。它通常以百分比形式表达,例如“99.9% 的请求在 200ms 内完成”。SLO 不是 SLA(服务等级协议),而是内部工程团队用于指导决策的可靠性目标。
| 概念 | 定义 | 典型场景 |
|---|---|---|
| SLO | 内部可靠性目标,用于指导工程决策 | API 响应时间 P99 ≤ 500ms |
| SLA | 对外承诺的合同条款,通常附带惩罚 | 月度可用性 ≥ 99.9%,否则赔偿 |
| SLI | 实际测量的服务性能指标 | 请求延迟、错误率、吞吐量 |
实践建议:SLO 应比 SLA 更严格(例如 SLA 为 99.9%,SLO 设为 99.95%),为响应延迟和故障留出缓冲空间,避免直接触发合同惩罚。
1.2 SLI 与 SLO 的关系
服务等级指标(SLI)是对服务某个维度的量化测量,而 SLO 则是对这些测量值设定的目标阈值。SLI 是“测量什么”,SLO 是“目标是多少”。
常见的 SLI 类型包括:
- 可用性 SLI:成功请求数 / 总请求数
- 延迟 SLI:满足延迟阈值的请求比例(如 P99 ≤ 200ms)
- 吞吐量 SLI:每秒处理请求数(RPS)
- 错误率 SLI:返回错误状态码的请求比例
SLI 到 SLO 的映射关系可以用以下公式表达:
SLO = 目标值(Target) × 时间窗口(Window)
例如:99.9% 的请求延迟 ≤ 200ms,统计周期为 30 天
关键原则:每个 SLO 必须对应至少一个可测量的 SLI。没有 SLI 支撑的 SLO 是空头承诺,无法在 Grafana 中可视化。
1.3 错误预算概念
错误预算是 SLO 的衍生概念,定义为 1 - SLO。例如,如果 SLO 为 99.9%,则错误预算为 0.1%。错误预算代表在 SLO 时间窗口内,服务可以“失败”而不违反承诺的最大容忍度。
错误预算的核心价值在于:
- 量化风险:将抽象的可靠性目标转化为可消耗的“预算”
- 指导决策:当错误预算充足时,可以更激进地发布新功能;当预算紧张时,应优先修复稳定性
- 触发告警:错误预算消耗速率超过阈值时,触发告警或自愈流程
常见误区:错误预算不是“允许犯错的额度”,而是“可接受的不可用时间”。例如,99.9% SLO 在 30 天内允许约 43 分钟的不可用时间。一旦耗尽,即使服务仍在运行,也视为 SLO 违反。
1.4 错误预算在 SRE 实践中的应用
错误预算不仅是数学概念,更是 SRE 团队的管理工具。下表总结了错误预算在不同场景下的典型应用:
| 场景 | 错误预算状态 | 推荐行动 |
|---|---|---|
| 新功能发布 | 充足(剩余 > 50%) | 可正常发布,但需监控发布后消耗变化 |
| 容量扩缩容 | 中等(剩余 20%–50%) | 谨慎操作,优先进行灰度验证 |
| 故障响应 | 紧张(剩余 < 20%) | 冻结非关键变更,启动自愈或人工介入 |
| SLO 违反 | 耗尽(剩余 ≤ 0%) | 触发紧急告警,执行故障复盘与改进 |
Grafana 看板设计启示:在后续章节中,我们将使用 Grafana 的
prometheus 数据源,通过 SLI 指标 / SLO 目标 计算错误预算剩余百分比,并设置 消耗速率告警(例如:过去 1 小时消耗了 10% 的错误预算),实现比固定阈值更灵敏的告警。
通过以上内容,我们建立了 SLO 基础概念的完整认知:SLI 是测量基础,SLO 是目标承诺,错误预算是量化风险与指导行动的管理工具。这三者构成了 Grafana SLO 告警看板的核心数据模型。