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 中可视化。
SLI → SLO → 错误预算 关系架构 可用性 SLI 延迟 SLI 错误率 SLI 吞吐量 SLI SLO:99.9% 可用 SLO:P99 ≤ 200ms SLO:错误率 < 0.1% SLO:RPS ≥ 1000 错误预算:0.1% 错误预算:累积 错误预算:消耗 错误预算:剩余 SLI 是测量指标,SLO 是目标阈值,错误预算是 SLO 允许的失败空间

1.3 错误预算概念

错误预算是 SLO 的衍生概念,定义为 1 - SLO。例如,如果 SLO 为 99.9%,则错误预算为 0.1%。错误预算代表在 SLO 时间窗口内,服务可以“失败”而不违反承诺的最大容忍度。

错误预算的核心价值在于:

  • 量化风险:将抽象的可靠性目标转化为可消耗的“预算”
  • 指导决策:当错误预算充足时,可以更激进地发布新功能;当预算紧张时,应优先修复稳定性
  • 触发告警:错误预算消耗速率超过阈值时,触发告警或自愈流程
常见误区:错误预算不是“允许犯错的额度”,而是“可接受的不可用时间”。例如,99.9% SLO 在 30 天内允许约 43 分钟的不可用时间。一旦耗尽,即使服务仍在运行,也视为 SLO 违反。
错误预算消耗与告警触发流程 SLO 定义 计算错误预算 实时监控消耗 消耗速率分析 是否超阈值? 否:继续监控 触发告警 / 自愈 错误预算消耗速率是比剩余量更敏感的告警指标

1.4 错误预算在 SRE 实践中的应用

错误预算不仅是数学概念,更是 SRE 团队的管理工具。下表总结了错误预算在不同场景下的典型应用:

场景 错误预算状态 推荐行动
新功能发布 充足(剩余 > 50%) 可正常发布,但需监控发布后消耗变化
容量扩缩容 中等(剩余 20%–50%) 谨慎操作,优先进行灰度验证
故障响应 紧张(剩余 < 20%) 冻结非关键变更,启动自愈或人工介入
SLO 违反 耗尽(剩余 ≤ 0%) 触发紧急告警,执行故障复盘与改进
Grafana 看板设计启示:在后续章节中,我们将使用 Grafana 的 prometheus 数据源,通过 SLI 指标 / SLO 目标 计算错误预算剩余百分比,并设置 消耗速率告警(例如:过去 1 小时消耗了 10% 的错误预算),实现比固定阈值更灵敏的告警。

通过以上内容,我们建立了 SLO 基础概念的完整认知:SLI 是测量基础,SLO 是目标承诺,错误预算是量化风险与指导行动的管理工具。这三者构成了 Grafana SLO 告警看板的核心数据模型。