度量用户真正体验到的服务
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 反映用户体验,但需要谨慎设计分母和窗口。