深色模式
事故演练
摘要:桌面推演用一张虚构的故障场景,检验值班人是否知道该找谁、看哪里、说什么。本文给出场景卡片模板、主持人脚本、观察员评分表和一次推演的完整执行流程。
适用环境
bash
# 桌面推演不需要真实故障注入,只需会议室与计时器
command -v date >/dev/null && echo "计时可用"
mkdir -p drills/$(date +%F) && cd drills/$(date +%F)1
2
3
2
3
操作步骤
第 1 步:设计场景卡片
场景要真实但可控:选一个历史上发生过、或大概率会发生的故障。
bash
cat > scenario.md <<'EOF'
# 场景:下单接口 5xx 突增
已知信息:
- 10:12 告警:CheckoutUnavailable(错误率 40%)
- 10:13 用户反馈群出现 5 条投诉
隐藏信息(主持人逐步放出):
- 10:15 放出:5 分钟前有一次 pay 服务发布
- 10:20 放出:DB 连接数接近上限
EOF1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
第 2 步:分配角色与规则
bash
cat > roles.md <<'EOF'
| 角色 | 承担人 | 规则 |
| --- | --- | --- |
| 主持人 | X | 按时间放出信息,不提示 |
| 值班 Primary | A | 按真实流程响应 |
| Secondary | B | 超时未 ACK 时介入 |
| 观察员 | C | 只记录,不参与 |
EOF1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
第 3 步:执行推演
bash
# 记录关键动作时间点
tl=timeline.md
: > "$tl"
mark(){ echo "$(date -u '+%H:%M:%S') $1" >> "$tl"; }
mark "推演开始:告警发出"
mark "Primary ACK"
mark "定级"
mark "止损动作"
mark "对外播报"
cat "$tl"1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
第 4 步:主持人按脚本放信息
bash
# 模拟推进:每 3 分钟放一条新线索
for i in 1 2 3; do
sleep 180
sed -n "$((i+3))p" scenario.md
done1
2
3
4
5
2
3
4
5
第 5 步:评分与复盘
bash
cat > scorecard.md <<'EOF'
| 检查项 | 达标 | 说明 |
| --- | --- | --- |
| 5 分钟内 ACK | 是/否 | |
| 正确定级 | 是/否 | |
| 找到 Runbook 并照做 | 是/否 | |
| 15 分钟内一次对外播报 | 是/否 | |
| 明确升级对象 | 是/否 | |
EOF1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
验证
bash
# 1. 时间线完整,覆盖从告警到恢复
grep -c . timeline.md
# 2. 评分表每项都有结论
grep -c '是\|否' scorecard.md
# 3. 产出改进项并进入跟踪
grep -A5 '改进项' scorecard.md || echo "需补充改进项"1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
常见坑
场景太简单,全员五分钟解决
推演要检验的是流程盲区,场景应包含信息缺失、依赖方不可达等真实困难。
主持人忍不住给提示
一提示就失去检验意义。主持人的唯一职责是"给信息",不给答案。
把推演结果当成绩效证据
推演是用来发现流程问题的,用于考核会导致参与者演戏。结果只用于流程改进。