← 中文资源

简体中文版本

SLI、SLO 与 SLA

SLI 从用户视角度量服务质量,SLO 设定内部目标并导出错误预算,SLA 是对外的合同承诺且应比 SLO 宽松。

阅读英文原文

度量用户真正体验到的服务

SLI 应从用户视角定义。对 API 而言,好的 SLI 是在边缘测得的、在 300 毫秒内返回成功响应的请求比例。服务器 CPU 或进程在线时间可以解释 SLI,但它们不是 SLI。服务可能“在线”,而每个请求都超时。

SLI: successful requests / valid requests, measured over 5-minute windows
SLO: 99.9% over 30 days
SLA: 99.5% monthly, with service credits

SLI 必须有清晰的分子、分母和测量点。“成功”需要定义:哪些状态码、哪些端点、排除哪些客户端错误。改变定义就改变了目标和错误预算。

设定留有余地的目标

99.9% 的月度 SLO 允许约 43 分钟完全中断,或取决于聚合方式,允许更大比例的部分失败。100% 的目标不现实,还会鼓励隐藏故障。根据用户容忍度和可靠性成本选择目标,并让 SLA 比 SLO 更宽松。

定期复核与演进

SLO 不是永久的。流量模式、依赖和产品预期都会变化。要定期复核 SLI 定义、目标和测量管道。如果团队持续未达标,要么可靠性工作需要改进,要么目标定错了;调查清楚再调整,不要悄悄调低。

何时使用

每个有可靠性承诺的面向用户服务都应定义 SLI 和 SLO。优点是共享、可度量的“健康”定义;代价是埋点和维护测量管道的工作。与原始在线率监控相比,SLO 反映用户体验,但需要谨慎设计分母和窗口。