← 返回 FDE 培养总览 FDE 培养 · 知识点深化 · SRE 与可靠性工程
知识点深化 · SRE

SRE 与可靠性工程:SLA/SLO/SLI、错误预算、故障演练、告警策略

"系统到底有多可靠?"这话不能靠感觉说。SRE 把它变成数字:SLI 是你测到的指标,SLO 是你定的目标,SLA 是对用户的承诺。再用错误预算平衡"加功能"和"保稳定"。这一页把这套量化方法和故障演练、告警策略讲透。

① 小白第一课怎么学(4 步走,约 80 分钟)

先把 SLI/SLO/SLA 三个概念的层级关系搞清楚,这是 SRE 的地基。

1分清三个 S(15 分钟)
读②③:SLI=测出来、SLO=内部目标、SLA=对外承诺。
2理解错误预算(20 分钟)
读④:99.9% 可用 = 每月只允许宕 43 分钟。
3走一遍故障处理(30 分钟)
跟着⑤看告警→响应→回滚→复盘。
4排错+刷题(15 分钟)
读⑥告警/复盘坑,做⑦⑩。
本课小目标学完你要能:① 区分 SLI/SLO/SLA;② 算一个错误预算;③ 说清故障复盘 blameless 原则;④ 设计合理告警。

② 一图看懂:SRE 体系

SRE 可靠性 SLI 实测的可靠性指标 SLO 内部目标 错误预算 100%-SLO,可宕机额度 SLA/告警/演练 对外承诺+故障应对 复盘 blameless 对事不对人 易错:告警太多/复盘追责 SLA 随便写
读法:先测 SLI,再定 SLO;SLO 和 100% 的差就是错误预算;把 SLO 写紧就是 SLA;围绕它做告警和故障演练。

③ 本质直觉:用数字管可靠性

以前问"系统稳不稳",回答是"还行吧、挺稳的"。SRE 拒绝这种感觉,要求量化。

SLI(指标):你实际测到的数字。比如"过去 30 天,请求成功率 99.95%"、"P99 延迟 300ms"。这是事实。

SLO(目标):你定的内部目标,比如"请求成功率 ≥ 99.9%"。SLO 永远比 SLA 紧,留出缓冲。

SLA(承诺):写进合同对用户的承诺,比如"99.5% 可用,否则赔付"。比 SLO 松,是底线。

错误预算:SLO=99.9%,意味着每月允许宕机约 43 分钟。这就是"预算"。预算没花完=可以放心发新功能;预算快超了=冻结发布、专心稳。

实际 SLI 99.95% SLO 99.9%(目标线) SLA 99.5% SLA < SLO < SLI(越紧越好) 每月错误预算 = 宕机约 43 分钟
为什么不能追 100% 可用做到 99.99% 的成本是 99.9% 的十倍以上,边际收益极低。错误预算就是承认"一定会出点小问题",在稳定和迭代之间找平衡。

④ 完整体系:错误预算、故障流程、告警策略

三个 S 的层级

概念是什么例子对象
SLI实测指标成功率 99.95%事实数据
SLO内部目标≥99.9%团队自律
SLA对外承诺≥99.5%,否则赔付合同用户

错误预算速算

SLO每月允许宕机时间
99.9%约 43 分钟
99.95%约 22 分钟
99.99%约 4.3 分钟
99%约 7.2 小时
错误预算 错误预算 = 100% − SLO  |  预算用完 → 冻结发布,先稳后快

故障处理流程

阶段动作
1. 检测告警触发,oncall 响应
2. 止血优先恢复服务:回滚、降级、切流,先别查根因
3. 根因服务恢复后再慢慢定位
4. 复盘写事后总结(Postmortem),blameless 对事不对人

故障演练(Game Day/混沌工程)

主动制造故障(杀一个 Pod、断一条网络、打满流量),验证系统能否自愈、告警是否到位。别等真实事故才发现"预案没写、告警没配"。

告警策略

原则说明
基于 SLI/SLO只对影响用户的指标告警,不拍脑袋
持续时间加 for 窗口,防抖动
可操作每条告警都要有明确处置动作,否则是噪音
分级严重才打电话,普通发群

⑤ 用法场景与典型例题

例1(错误预算)SLO=99.9%,一个月(30 天)允许宕机多久?
1 分钟都不能浪费。
① 30 天 = 30×24×60 = 43200 分钟。
② 1−99.9% = 0.1% 不可用。
③ 43200 × 0.1% = 43.2 分钟。
答案:一个月只能宕约 43 分钟,两次大故障就超预算了。
例2(优先级)线上故障,是先查根因还是先回滚?
用户在用,先止血。
① 故障期间每分钟都在影响用户。
② 第一反应是回滚到上个稳定版本、降级非核心功能、切走流量。
③ 服务恢复后,再从容查根因、写复盘。
答案:先恢复服务,再查根因。别在事故现场调试代码。
例3(复盘)复盘会该追究是谁删错了库吗?
blameless 原则。
① 事故根因通常是"流程/系统没拦住",不是某个人的错。
② blameless(无罪复盘):聚焦"系统为什么允许一个人删库"(没二次确认、没备份、没权限控制)。
③ 产出改进项:加删除确认、自动备份、最小权限。
答案:对事不对人,否则下次没人敢上报问题。
SLA/SLO/SLI 大小关系记住:SLI(实际)最好 > SLO(内部目标)> SLA(对外承诺)。对外永远比对内松,留缓冲。

⑥ 高频错误诊断(4 条)

错误 1:告警轰炸,oncall 麻木把 CPU 高、磁盘满都设成 critical 电话,半夜被吵醒无数次真事故反而漏掉。只对影响 SLO 的告警升级,其余进群/工单。
错误 2:随便写个 99.99% SLA没算过每月只能宕 4 分钟就敢承诺,做不到要赔钱。SLA 要基于历史 SLI 数据反推。
错误 3:故障时现场查根因事故正在影响用户,却花半小时 debug。记住先止血(回滚/降级),根因事后复盘再查。
错误 4:复盘会变成追责大会一追责,下次大家就会隐瞒问题。blameless 复盘聚焦系统改进项,明确 owner 和 deadline。

⑦ 考点真题演练(4 题)

考点分布

考法出题形式应对
三个 S区分 SLI/SLO/SLA实测/目标/承诺
错误预算算允许宕机时间100%-SLO 乘总时间
故障流程先回滚还是先查因先止血
复盘blameless 原则对事不对人

真题基础1. 我们实际测到"过去 30 天请求成功率 99.95%",这是?

真题中档2. SLO 设定为 99.9%,每月(30 天)允许的宕机时间约是?

真题中档3. 线上服务突然大面积报错,正确的第一反应是?

真题拔高4. 关于故障复盘,正确的做法是?

⑧ 必背命令/知识点卡

SLI:实测的可靠性数字 成功率/延迟
SLO:内部目标,比 SLA 紧 99.9%
SLA:对用户/合同承诺 最松
错误预算:100%−SLO,99.9%≈月宕43分 花完冻结发布
故障:先止血回滚,再查根因 别现场 debug
复盘:blameless 对事不对人 出改进项
告警:基于 SLO、加 for、可操作、分级 别轰炸

⑨ 应用输出:给一个 API 定 SLO 并搭故障应对

场景:一个内部订单 API,要定义可靠性目标并准备故障应对
① 定 SLI:测"请求成功率"和"P99 延迟"。
② 定 SLO:成功率 ≥ 99.9%、P99 ≤ 500ms。
③ 算预算:每月允许约 43 分钟不可用。
④ 配告警:5xx 错误率 > 1% 持续 5 分钟、P99 > 1s 持续 5 分钟 → 电话 oncall。
⑤ 准备止血:上线一键回滚命令、非核心接口降级开关。
⑥ 演练+复盘:每季度 Game Day 杀一个 Pod 看是否自愈;事故后写 blameless 复盘,列改进项。
口述可靠性思路"用 SLI 测、SLO 定目标,错误预算控制发布节奏;出事先回滚止血,再 blameless 复盘,告警只盯影响用户的指标。"

⑩ 分层练习 15 题(基础 5 + 中档 5 + 拔高 5)

▍基础 5 题

基础1SLI 是什么?
实际测到的可靠性指标(成功率、延迟)。
基础2SLO 和 SLA 哪个更严格?
SLO 更严格(内部目标),SLA 是对外承诺更松。
基础3错误预算快用完时该怎么办?
冻结新发布,优先稳稳定性。
基础4故障复盘的核心原则?
blameless 对事不对人。
基础5故障时第一优先级?
恢复服务(止血),再查根因。

▍中档 5 题

中档699.99% SLO 每月允许宕多久?
约 4.3 分钟。
中档7为什么不追求 100% 可用?
边际成本极高,99.99% 成本是 99.9% 的很多倍,不划算。
中档8告警为什么要加持续时间(for)?
防瞬时抖动误报,只有真异常持续才通知。
中档9故障演练(Game Day)的目的?
主动制造故障,验证自愈、告警和预案,别等真实事故才发现没准备。
中档10SLA 99.5% 和 SLO 99.9% 哪个对用户?
99.5% 是对用户承诺(SLA),99.9% 是内部目标(SLO),留缓冲。

▍拔高 5 题

拔高11错误预算"花完了"还想上线大功能怎么办?
说明稳定性已破 SLO,应先修复、降风险,或灰度小流量、强监控下谨慎上。
拔高12一次事故根因是"一个人误删库",blameless 复盘应改进什么?
改进系统:删除二次确认、软删除、自动备份、最小权限、审批流,而不是处罚人。
拔高13什么告警是"好告警"?
基于 SLO、持续异常、收到后有人知道该做什么动作、分级合理。否则是噪音。
拔高14SLA 写太高会怎样?
做不到要赔付/违约;应基于历史 SLI 数据和成本现实地定。
拔高15降级和熔断在故障中的作用?
非核心功能降级、对故障依赖熔断,保住核心路径,是快速止血手段。

⑪ 记忆口诀 + 7 天复习计划

三句口诀 ① SLI 测、SLO 定、SLA 对外,对内永远比对外紧。
② 错误预算 100% 减 SLO,花完冻结发布。
③ 故障先止血回滚,复盘对事不对人,告警只盯用户。
天任务自检
第 1 天读②③,分清三个 S能举例区分
第 2 天背知识点卡 + 做基础 1-5基础全对
第 3 天算三个 SLO 对应的月宕机时间算对
第 4 天做中档 6-10,配一条 SLO 告警会加 for
第 5 天做拔高 11-15 + 真题 4 题懂 blameless
第 6-7 天口述故障四步流程,默写错误预算公式不看资料全默对

← 返回 FDE 培养总览