深色模式
SLO 文档模板
摘要:SLO 不写下来就会被遗忘或各说各话。本文给一份可直接复制的 Markdown 模板,把 SLI、目标、预算、告警、owner 固定到一个文件里,作为团队单一事实来源。
适用环境
- 已选定要保障的服务
- 文档纳入版本库(Git)管理
操作步骤
1. 复制模板
markdown
# SLO:<服务名>
## 1. 服务简介
- 职责:<一句话>
- 用户:<谁在用>
- owner:<负责人/团队>
## 2. SLI 定义
| SLI | 定义/PromQL | 目标 |
|-----|-------------|------|
| 可用性 | sum(rate(...{code!~"5.."}[5m]))/sum(rate(...[5m])) | 99.9% |
| 延迟 P99 | histogram_quantile(0.99, ...) | < 300ms |
## 3. 错误预算(滚动 30 天)
- 可用性预算 = 0.1% → 约 43.2 分钟/月
- 告警:MWMB(见多窗口多燃尽告警)
## 4. 告警与门禁
- 燃尽告警 → OnCall(page)
- 预算耗尽 → 冻结发布(见错误预算政策)
## 5. 复盘记录
| 日期 | 达标 | 超标原因 | 改进项 | 负责人 |
|------|------|----------|--------|--------|1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2. 填关键字段
重点填清 PromQL 和 目标,二者是后续所有计算与告警的依据。
3. 评审与归档
bash
# 提交 MR,相关团队评审 SLI 合理性后合并
git add slo/<service>.md && git commit -m "add SLO for <service>"1
2
2
DANGER
模板里的 PromQL 必须是真实能跑的表达式,复制示例占位符会导致 SLI 算不出、文档成空壳。
验证
bash
# 把模板里的 PromQL 逐一在 Prometheus 跑通,确认有数据1
常见坑
WARNING
- 文档写完不更新,半年后 SLI 早已和实际不符,沦为摆设;纳入月度复盘更新。
- 一个服务塞太多 SLI,维护成本高,聚焦 2-4 个。