Prometheus误差预算台账与质量门禁的SLA联动 - 第1节

1.1 SLA 定义:服务等级协议的核心要素

服务等级协议(Service Level Agreement,SLA)是服务提供方与客户之间就服务质量达成的正式契约。在可靠性工程中,SLA 定义了当服务未达到约定标准时提供方应承担的后果,通常表现为服务信用(Service Credit)或罚金。

SLA 构成要素 说明 典型示例
服务范围 明确哪些功能或接口受 SLA 约束 API 网关、核心交易链路
指标定义 量化服务质量的测量方式 可用性 ≥ 99.99%
测量窗口 统计周期与数据来源 月度滚动、Prometheus 30d 窗口
例外条款 不计入 SLA 的免责场景 计划内维护、DDoS 攻击
违约后果 未达标时的补偿机制 10% 月度服务费减免
SRE 视角:SLA 是商业合同,不是技术指标。SRE 团队不应直接承诺 SLA,而应通过 SLO 来驱动可靠性决策,避免将商业风险与技术实现过度耦合。

1.2 SLO 与 SLI:可靠性工程的量化基石

1.2.1 SLI(Service Level Indicator)—— 服务质量指标

SLI 是服务质量的直接测量值,通常是一个随时间变化的比率或分布。常见的 SLI 类型包括:

  • 可用性 SLI:成功请求数 / 总请求数(如 HTTP 200 比例)
  • 延迟 SLI:请求响应时间的百分位分布(如 p99 ≤ 200ms)
  • 吞吐量 SLI:每秒处理请求数(RPS)
  • 错误率 SLI:5xx 响应占比

1.2.2 SLO(Service Level Objective)—— 服务质量目标

SLO 是 SLI 的目标阈值,表示服务在给定时间窗口内应达到的可靠性水平。SLO 通常以“SLI ≤ 阈值”或“SLI ≥ 阈值”的形式定义,并附带时间窗口。

# Prometheus 中定义 SLO 的典型方式
# 可用性 SLO:30 天内可用性 ≥ 99.9%
slo:availability_30d = 1 - (
  sum(rate(http_requests_total{status=~"5.."}[30d])) /
  sum(rate(http_requests_total[30d]))
) >= 0.999
概念 角色 示例 是否可协商
SLA 商业契约 月度可用性 ≥ 99.99% 法律约束,不可随意调整
SLO 内部目标 30 天滚动可用性 ≥ 99.95% 可随业务需求调整
SLI 原始测量 过去 5 分钟请求成功率 99.97% 客观数据,不可协商
关键原则:SLO 应比 SLA 更严格(通常预留 0.05%~0.1% 的缓冲),这样即使 SLO 偶尔被突破,SLA 仍可得到保障。例如 SLA 要求 99.99%,SLO 可设为 99.95%,留出误差预算空间。

1.3 SLA 在可靠性工程中的核心地位

SLA 在可靠性工程中扮演着北极星的角色,它决定了 SRE 团队的资源投入优先级、故障响应等级和架构演进方向。没有 SLA,可靠性工作将失去量化依据。

SLA 在可靠性工程中的核心地位 SLA 商业契约 可用性 ≥ 99.99% · 月度滚动 · 服务信用 驱动 SLO 内部可靠性目标 30d 可用性 ≥ 99.95% · 预留缓冲 计算 误差预算(Error Budget) 100% − SLO = 0.05% 可容忍故障时间 预算充足 → 加速发布 可接受更高变更风险 预算耗尽 → 冻结发布 优先恢复可靠性 SLA 通过 SLO → 误差预算 → 发布决策的链路,将商业契约转化为工程行动 这是 Google SRE 方法论的核心闭环

1.3.1 SLA 驱动的三大工程决策

  1. 故障优先级排序:影响 SLA 的故障(如核心链路中断)获得最高响应等级(P0),SLA 范围外的告警可降级处理。
  2. 容量规划依据:SLA 要求的可用性决定了冗余设计(多 AZ、多 Region)和资源预留策略。
  3. 变更节奏控制:误差预算消耗速率直接影响发布频率——预算充足时加速迭代,预算紧张时冻结变更。
常见误区:不要将 SLA 直接作为告警阈值。SLA 是月度/季度统计值,实时告警应基于 SLO 的误差预算消耗速率。例如:当误差预算在 1 小时内消耗超过 10% 时触发告警,而非等到 SLA 被突破才响应。

1.4 SLA、SLO、SLI 的联动关系总结

三者构成从商业承诺到技术测量再到工程行动的完整链路:

SLA → SLO → SLI 联动关系 SLA 商业契约 99.99% 可用性 分解 SLO 内部目标 99.95% 可用性 测量 SLI 原始指标 请求成功率 99.97% SLA 定义“必须做到多少”,SLO 定义“我们承诺做到多少”,SLI 定义“实际做到了多少” 误差预算 = SLO − SLI,是衡量可靠性健康状况的核心指标 本课程后续章节将围绕误差预算的 Prometheus 计算与门禁联动展开