深色模式
值班交接
摘要:交接是值班最容易失守的环节——上一班知道的事,下一班完全不知道。本文给出交接必须包含的五类信息、自动生成"本班发生了什么"的脚本,以及强制确认机制。
适用环境
bash
# 交接材料建议与告警记录同源
ls -1 pages.log incidents/ 2>/dev/null
date -u '+%F %T'1
2
3
2
3
操作步骤
第 1 步:明确交接必须包含五类信息
bash
cat > handoff-template.md <<'EOF'
## 交接:<起止时间> 交接人:A -> B
1. 未关闭事件:ID / 当前状态 / 下一步
2. 进行中的变更:发布、扩容、迁移,是否跨班
3. 已知隐患:临时绕过、降级开关、手动脚本
4. 本班新增告警与处理结果
5. 需要下一班盯的观察项
EOF1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
第 2 步:自动生成"本班发生了什么"
bash
# 从告警日志中筛出本班次(如最近 24 小时)的记录
cat > gen-handoff.sh <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
hours=${1:-24}
out=handoff-$(date -u '+%F').md
{
echo "## 交接 $(date -u '+%F %T') (近 ${hours}h)"
echo
echo "### 告警统计"
awk -v cutoff="$(date -u -d "-$hours hours" '+%F %T')" '$0 >= cutoff' pages.log 2>/dev/null | sort | uniq -c | sort -rn | head -20 || echo "(无告警记录)"
echo
echo "### 未关闭事件"
grep -L 'resolved' incidents/*/timeline.md 2>/dev/null || echo "(无)"
} > "$out"
echo "已生成 $out"
EOF
chmod +x gen-handoff.sh && ./gen-handoff.sh 241
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
第 3 步:固定交接窗口与方式
bash
# 建议:工作日 10:00,15 分钟同步会 + 文档确认
TZ=Asia/Shanghai date -d 'today 10:00' '+%F %T %Z'
# 文档与会议缺一不可:会议负责传递隐性知识,文档负责可追溯1
2
3
2
3
第 4 步:交接必须由接手人确认
bash
# 接手人签名确认,避免"我以为你知道"
cat >> handoff-$(date -u '+%F').md <<EOF
接手人确认:________ 时间:$(date -u '+%F %T')
EOF
git add handoff-*.md && git commit -m "handoff $(date -u '+%F')" -q && echo "已归档"1
2
3
4
5
6
2
3
4
5
6
第 5 步:紧急情况下的最小交接
bash
# 无法开会时,至少三行发到频道
cat <<EOF
【交接】10/09 10:00 alice -> bob
- 未关闭:INC-1023(pay 连接池,已扩容观察中)
- 进行中:order 灰度 20%,勿同时发布 pay
- 隐患:redis 手动脚本 /tmp/fix.sh 未纳入 Runbook
EOF1
2
3
4
5
6
7
2
3
4
5
6
7
验证
bash
# 1. 交接文档已生成且包含未关闭事件段
grep -c '### 未关闭事件' handoff-$(date -u '+%F').md
# 2. 有接手人确认行
grep -q '接手人确认' handoff-$(date -u '+%F').md && echo "已确认" || echo "未确认"
# 3. 历史交接可检索
grep -rl 'INC-1023' handoff-*.md1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
常见坑
交接只说"没啥事"
没有事件时也要交接"进行中的变更"和"已知隐患",否则下一班会在不知情状态下发布,撞车。
口头交接不留痕
口头说完即失忆,复盘时无法还原。交接必须落到文档并入版本库。
跨班变更无人接管
上一班发起的灰度/迁移在交接时被遗漏,下一班不知情继续操作,极易引发叠加故障。进行中的变更必须单列。