深色模式
SLO 落地实践
摘要:很多团队卡在“知道 SLO 好但落不下去”。本文把落地拆成六步:选服务 → 定 SLI → 设目标 → 算预算 → 配告警 → 闭环,每一步都给可执行动作。
适用环境
- 已选定 1-3 个核心服务作为试点(别一上来全覆盖)
- 有 Prometheus + Grafana + Alertmanager
操作步骤
1. 选试点服务
挑“挂了用户会骂、老板会问”的核心链路,先做一个,跑通再复制。
2. 定 SLI(见前文如何选 SLI)
promql
# 可用性 SLI
sum(rate(http_requests_total{code!~"5.."}[5m])) / sum(rate(http_requests_total[5m]))1
2
2
3. 设目标(初值从宽)
text
首版建议:可用性 99.5%,P99 延迟 500ms
(先宽松,跑一个月看实际再收紧,见小步快跑设 SLO)1
2
2
4. 算预算 + 配 MWMB 告警(见前文)
把多窗口多燃尽告警规则写入 Prometheus rules 并 reload。
5. 接通知与门禁
yaml
# 燃尽告警 → OnCall/IM(见告警分类)
route:
matchers: ['alertname=~"Slo.*Burn"']
receiver: 'page'1
2
3
4
2
3
4
6. 月度复盘闭环
每月看达标率、预算消耗、事故,更新 SLO 文档与政策。
DANGER
落地最大的坑是“设完就忘”。SLO 必须和发布门禁、事故复盘绑定,否则只是一行注释。
验证
bash
# 确认 SLI 表达式有数据
# 确认燃尽告警能触发并通知到人
amtool alert add alertname=SloFastBurn severity=critical1
2
3
2
3
常见坑
WARNING
- 试点选太多服务,精力分散全做不好;先精做一个样板。
- 目标定太高(99.99%)首月必超标,打击信心,初值务必宽松。