核心概念:SLO、SLI、SLI与告警阈值的关系、错误预算

在构建可靠的告警体系与压力测试异常响应流程之前,必须统一团队对服务可靠性的度量语言。SLO、SLI 与错误预算正是这套语言的核心词汇。理解它们之间的逻辑关系,是制定科学告警阈值的前提。

2.1 什么是 SLI(Service Level Indicator,服务等级指标)

SLI 是对服务某个特定维度的直接量化测量值。它回答的是“服务现在表现如何”这个事实性问题。

  • 常见 SLI 类型:
    • 延迟(Latency):如 95% 请求在 200ms 内完成。
    • 错误率(Error Rate):如 HTTP 5xx 响应占总请求的百分比。
    • 吞吐量(Throughput):如每秒处理的请求数(RPS)。
    • 可用性(Availability):如服务成功响应请求的时间占比。
  • 测量方式:通常通过服务端埋点、负载均衡器日志或客户端合成监控采集。
实践要点:选择 SLI 时应遵循“用户视角”原则。例如,用户感知的延迟是端到端延迟,而非仅服务端处理时间。错误的 SLI 选择会导致告警与用户体验脱节。

2.2 什么是 SLO(Service Level Objective,服务等级目标)

SLO 是为 SLI 设定的目标阈值或目标范围。它回答的是“我们希望服务表现成什么样”这个期望性问题。SLO 是团队与业务方达成的内部契约。

维度 SLI 示例 SLO 示例
延迟 P99 延迟 P99 延迟 ≤ 500ms,在 99.9% 的滚动窗口内满足
错误率 HTTP 5xx 占比 错误率 ≤ 0.1%,在 99.5% 的滚动窗口内满足
可用性 成功响应时间占比 月度可用性 ≥ 99.99%
关键区别:SLO 比 SLA(Service Level Agreement,服务等级协议)更严格。SLA 是面向客户的对外承诺,通常比内部 SLO 宽松(例如 SLO 为 99.99%,SLA 可能为 99.9%),以预留安全缓冲。

2.3 SLI 与告警阈值的关系

告警阈值并非直接等于 SLO 边界。合理的告警阈值设计应遵循“燃烧速率”原则,在 SLO 被违反之前提前预警。

  • 直接关系:告警阈值通常基于 SLI 的短期窗口(如 5 分钟、10 分钟)设定,而 SLO 基于长期窗口(如 30 天、季度)评估。
  • 设计原则:
    • 多级阈值:设置 Warning(警告)和 Critical(严重)两级阈值。
    • 燃烧速率告警:当错误预算消耗速度超过预期时触发告警,而非仅当 SLI 超过 SLO 时才告警。
常见误区:直接将 SLO 的 99.9% 可用性作为告警阈值。当 SLI 跌至 99.9% 时,错误预算可能已耗尽,此时告警为时已晚。正确做法是设置更严格的阈值(如 99.95%),提前介入。
SLI、SLO、告警阈值关系图 SLI、SLO、告警阈值关系图 时间 SLI 实际值 SLO 目标线 (99.9%) 告警阈值线 (99.5%) 告警触发区 说明:当 SLI 实际值(蓝线)跌破告警阈值线(红线)时触发告警,此时距离 SLO 目标线(绿线)尚有缓冲空间。 团队可在错误预算完全耗尽前进行干预,避免 SLO 违反。

2.4 错误预算(Error Budget)的概念

错误预算 = 1 - SLO。它表示服务在 SLO 允许范围内可以出现故障或性能下降的时间总量。

  • 计算示例:
    • 若 SLO 为 99.9%(月度),则错误预算 = 0.1% × 30 天 × 24 小时 × 60 分钟 = 43.2 分钟/月。
    • 若 SLO 为 99.99%(季度),则错误预算 = 0.01% × 90 天 × 24 小时 × 60 分钟 = 12.96 分钟/季度。
  • 核心作用:
    • 决策依据:当错误预算充足时,团队可以更激进地发布新功能或进行架构变更;当错误预算紧张时,应冻结发布,优先提升稳定性。
    • 告警触发:基于错误预算消耗速率的告警(如“过去 1 小时消耗了 10% 的月度错误预算”)比基于 SLI 绝对值的告警更早发现问题。
核心公式:
错误预算 = 1 - SLO
错误预算消耗率 = (1 - 当前 SLI) / (1 - SLO) × 100%

当消耗率超过预设阈值(如 10%/小时)时,触发告警。

错误预算消耗与告警触发流程 错误预算消耗与告警触发流程 定义 SLO (99.9%) 错误预算 = 0.1% 监控 SLI 消耗速率 消耗速率 > 阈值 (10%/h)? 否 是 触发告警 & 启动响应 继续监控 流程核心:错误预算消耗速率告警比 SLI 绝对值告警更早发现风险,为响应争取时间。

2.5 四者关系总结

概念 本质 时间窗口 与告警的关系
SLI 实时测量值 短(秒/分钟) 告警的直接数据源
SLO 长期目标 长(月/季度) 告警阈值的参考基准
告警阈值 短期预警边界 短(分钟/小时) 基于 SLI 和 SLO 的燃烧速率计算
错误预算 可容忍的故障总量 与 SLO 一致 告警优先级和响应策略的决策依据
最佳实践:在压力测试场景中,应同时监控 SLI 的实时变化和错误预算的消耗速率。当压力测试导致错误预算消耗速率超过 10%/小时时,即使 SLI 尚未跌破 SLO,也应视为异常并启动响应流程。