深色模式
应急响应沟通
摘要:事故中沟通混乱往往比故障本身更伤信任。本文划分 IC(指挥)、CL(沟通)、OL(运维)三个角色,给出固定节奏的播报模板,以及用脚本同步记录时间线的做法。
适用环境
bash
# 沟通依赖的通道:IM webhook、状态页 API、电话会议
for c in curl jq; do command -v $c >/dev/null || echo "$c 需安装"; done
echo "$INCIDENT_WEBHOOK" | grep -q '^http' && echo "webhook 已配置" || echo "webhook 未配置"1
2
3
2
3
操作步骤
第 1 步:先分角色再开工
| 角色 | 职责 | 禁忌 |
|---|---|---|
| IC 指挥 | 决策、分配任务 | 亲自上手改配置 |
| CL 沟通 | 对内播报、对外答复 | 未经 IC 确认就承诺时间 |
| OL 运维 | 执行排查与止损 | 同时在群里长篇讨论 |
第 2 步:开事件频道并置顶模板
bash
cat > incident-template.md <<'EOF'
【Sev?】<一句话现象>
影响:<谁、多少用户、什么功能>
当前:<已确认的事实>
正在做:<当前动作 + 负责人>
下次更新:<15 分钟后>
指挥:@IC 沟通:@CL 运维:@OL
EOF1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
第 3 步:按固定节奏播报
bash
# 每 15 分钟一次,即使"无进展"也要说
cat > broadcast.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
msg=$1
curl -sS -X POST "$INCIDENT_WEBHOOK" \
-H 'Content-Type: application/json' \
-d "$(jq -n --arg m "[$(date -u '+%H:%M')] $msg" '{msgtype:"text",text:{content:$m}}')"
EOF
chmod +x broadcast.sh
./broadcast.sh "Sev1 下单失败,已定位到 pay 依赖超时,正在回滚,15 分钟后更新"1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
第 4 步:同步记录时间线
bash
# 时间线是复盘的原料,边做边记,别靠回忆
tl=incidents/$(date +%F)/timeline.md
mkdir -p "$(dirname "$tl")"
echo "$(date -u '+%F %T') | $USER | $1" >> "$tl"
tail -5 "$tl"1
2
3
4
5
2
3
4
5
第 5 步:更新对外状态页
bash
# 只在确认事实后更新,避免"猜测"对外发布
curl -sS -X PATCH "${STATUS_PAGE_API}/incidents/${INCIDENT_ID}" \
-H "Authorization: OAuth ${STATUS_PAGE_TOKEN}" \
-H 'Content-Type: application/json' \
-d '{"incident":{"status":"investigating","body":"已确认下单受影响,正在处理"}}'1
2
3
4
5
2
3
4
5
第 6 步:结束后发收敛公告
bash
./broadcast.sh "已恢复,观察 30 分钟无异常,本事件关闭。复盘会时间另行通知"1
验证
bash
# 1. webhook 可达且返回成功
./broadcast.sh "[演练] 沟通链路自检" && echo "发送完成"
# 2. 时间线连续、无长时间空档
awk -F'|' '{print $1}' incidents/$(date +%F)/timeline.md | uniq -c | head
# 3. 模板文件存在且被使用
test -f incident-template.md && echo "模板 OK"1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
常见坑
多人在群里同时发言
信息源不唯一会让外部无从判断。指定 CL 之后,其余人只在事件频道发言,不对外答复。
承诺恢复时间
"10 分钟修好"一旦失约,信任成本翻倍。对外只说状态与下一步动作,不给时间点。
商业/个人隐私信息进群
把客户数据、截图里的敏感字段贴到 IM 里会造成二次事故。沟通材料先脱敏。