SRE:SLI、SLO 与错误预算

SRE 的目标不是追求所有服务永远 100% 可用,而是用用户可感知的指标定义可靠性目标,并在可靠性与发布速度之间做可执行的取舍。

一、三个核心概念

  • SLI:服务水平指标,实际测量值,例如成功请求比例、延迟达标比例或数据新鲜度。
  • SLO:服务水平目标,在时间窗口内希望 SLI 达到的水平。
  • 错误预算:允许未达到理想状态的空间,通常为 1 - SLO。

SLA 是面向客户的正式承诺,可能包含赔偿或合同责任;SLO 是内部可靠性目标,两者不能混为一谈。

二、从用户旅程选择 SLI

不要只把 CPU、内存和进程存活当作 SLI。先列出用户真正要完成的动作,例如登录、提交订单、查询结果或上传文件,再定义:

  • 好事件是什么;
  • 总事件是什么;
  • 从哪里测量;
  • 哪些错误属于服务责任;
  • 如何处理超时、取消和重试。

可用性示例:

SLI = 成功且在时限内完成的有效请求数 / 全部有效请求数

延迟目标应使用“达标请求比例”,不只看平均值。平均值会掩盖尾部慢请求。

三、SLO 示例

“过去 28 天,登录请求中至少 99.9% 在 800 毫秒内成功完成。”

一个完整 SLO 应包含:服务和用户、事件定义、阈值、统计窗口、数据源、排除项与负责人。目标不能脱离历史数据和业务价值拍脑袋设定。

四、错误预算如何使用

当服务消耗错误预算过快时,可以暂停高风险发布,优先修复可靠性、测试和容量问题;预算充足时,可允许更多实验和交付。错误预算政策应由产品、开发和运维共同认可。

它不是“允许制造故障”,也不是处罚团队的工具。其作用是把“稳定一点”和“发版快一点”的争论转成共同规则。

五、燃烧率告警

仅在月末发现 SLO 失守太晚。燃烧率表示错误预算被消耗的速度:

  • 短窗口高燃烧率用于发现快速重大故障;
  • 长窗口较低燃烧率用于发现持续慢性问题;
  • 多窗口组合可降低偶发尖峰带来的噪声。

告警应指向用户影响、值班动作和排障入口,而不是为每个内部指标单独报警。

六、落地步骤

  1. 选一个边界清楚、用户重要的服务。
  2. 用历史数据计算候选 SLI,检查缺失、偏差和采样问题。
  3. 与业务共同确定可实现且有价值的 SLO。
  4. 建立错误预算看板和多窗口燃烧率告警。
  5. 编写错误预算政策,明确何时暂停发布、谁来决定以及恢复条件。
  6. 每月复核目标、数据质量和用户体验变化。

七、常见误区

  • 目标全部设为 100%,导致无预算且难以执行。
  • 只监控服务端成功,忽略用户端超时和依赖失败。
  • 把计划维护全部排除,使指标比真实体验好看。
  • SLI 数据来自与业务路径无关的健康检查。
  • 告警数量很多,却没有对应的处理动作和负责人。
  • SLO 设定后从不复核,业务变化后仍沿用旧目标。

八、验收清单

  • SLI 可由原始数据重复计算;
  • SLO 对应具体用户旅程和时间窗口;
  • 错误预算政策获得产品、研发和运维共同认可;
  • 燃烧率告警经过历史故障回放;
  • 复盘行动能改善 SLI 或降低预算消耗;
  • 看板同时展示当前表现、预算剩余和趋势。

延伸阅读

Copyright © yan-jian.com 2023 - 2026 · Powered by GitBook更新时间: 2026-10-16 07:53:13

results matching ""

    No results matching ""