值班交接模式Skill on-call-handoff-patterns

此技能专注于优化值班职责交接流程,提供模式、模板和最佳实践,确保在班次更替时有效传递上下文、处理紧急事件并维护系统稳定性。用于交接值班责任、编写班次总结或改进值班流程,适合DevOps、运维和事件响应场景。关键词:值班交接、上下文传递、DevOps、运维、事件响应、交接文档、最佳实践。

DevOps 0 次安装 0 次浏览 更新于 3/10/2026

名称: 值班交接模式 描述: 掌握值班班次交接的模式,包括上下文传递、升级程序和文档记录。用于交接值班职责、编写班次总结或改进值班流程。 版本: 1.0 模型: sonnet 调用方式: 两者皆可 用户可调用: true 工具: [读取, 写入, Bash] 最佳实践:

  • 班次期间记录一切
  • 不确定时尽早升级
  • 保持交接同步进行
  • 事件前测试设置 错误处理: 优雅 流式支持: 支持 已验证: false 最后验证时间: 2026-02-19T05:29:09.098Z

模式: 认知/提示驱动 — 无独立实用脚本;通过代理上下文使用。

值班交接模式

值班班次交接的有效模式,确保跨班次的连续性、上下文传递和可靠的事件响应。

何时使用此技能

  • 交接值班职责
  • 编写班次交接总结
  • 记录进行中的调查
  • 建立值班轮换程序
  • 改进交接质量
  • 入职新值班工程师

核心概念

1. 交接组件

组件 目的
活动事件 当前发生的问题
进行中调查 正在调试的问题
最近变更 部署、配置
已知问题 已实施的工作区
即将事件 维护、发布

2. 交接时间安排

推荐: 班次间30分钟重叠

离岗:
├── 15分钟: 编写交接文档
└── 15分钟: 与接班同步通话

接班:
├── 15分钟: 审查交接文档
├── 15分钟: 与离岗同步通话
└── 5分钟: 验证警报设置

模板

模板1: 班次交接文档

# 值班交接: 平台团队

**离岗**: @alice (2024-01-15 至 2024-01-22)
**接班**: @bob (2024-01-22 至 2024-01-29)
**交接时间**: 2024-01-22 09:00 UTC

---

## 活动事件

### 当前无活动事件

交接时无活动事件。

---

## 进行中调查

### 1. 间歇性API超时 (ENG-1234)

**状态**: 调查中
**开始时间**: 2024-01-20
**影响**: 约0.1%的请求超时

**上下文**:

- 超时与数据库备份窗口 (02:00-03:00 UTC) 相关
- 怀疑备份过程导致锁争用
- 已在PR #567中添加额外日志 (部署于01/21)

**下一步**:

- [ ] 今晚备份后审查新日志
- [ ] 如果确认,考虑移动备份窗口

**资源**:

- 仪表板: [API延迟](https://grafana/d/api-latency)
- 线程: #platform-eng (01/20, 14:32)

---

### 2. 认证服务内存增长 (ENG-1235)

**状态**: 监控中
**开始时间**: 2024-01-18
**影响**: 暂无 (主动)

**上下文**:

- 内存使用每天增长约5%
- 性能分析未发现内存泄漏
- 怀疑连接池未正确释放

**下一步**:

- [ ] 审查01/21的堆转储
- [ ] 如果使用率 > 80%,考虑重启

**资源**:

- 仪表板: [认证服务内存](https://grafana/d/auth-memory)
- 分析文档: [内存调查](https://docs/eng-1235)

---

## 本班次已解决

### 支付服务中断 (2024-01-19)

- **持续时间**: 23分钟
- **根因**: 数据库连接耗尽
- **解决**: 回滚v2.3.4,增加池大小
- **事后分析**: [POSTMORTEM-89](https://docs/postmortem-89)
- **跟进工单**: ENG-1230, ENG-1231

---

## 最近变更

### 部署

| 服务      | 版本 | 时间        | 备注                      |
| ------------ | ------- | ----------- | -------------------------- |
| api-gateway  | v3.2.1  | 01/21 14:00 | 头部解析错误修复 |
| user-service | v2.8.0  | 01/20 10:00 | 新配置文件功能       |
| auth-service | v4.1.2  | 01/19 16:00 | 安全补丁             |

### 配置变更

- 01/21: API速率限制从1000增加到1500 RPS
- 01/20: 数据库连接池最大值从50更新到75

### 基础设施

- 01/20: 向Kubernetes集群添加2个节点
- 01/19: Redis从6.2升级到7.0

---

## 已知问题及工作区

### 1. 仪表板加载缓慢

**问题**: Grafana仪表板周一早上加载缓慢
**工作区**: UTC时间08:00后等待5分钟缓存预热
**工单**: OPS-456 (P3)

### 2. 不稳定集成测试

**问题**: CI中`test_payment_flow`间歇性失败
**工作区**: 重新运行失败作业 (通常重试后通过)
**工单**: ENG-1200 (P2)

---

## 即将事件

| 日期        | 事件                | 影响              | 联系人       |
| ----------- | -------------------- | ------------------- | ------------- |
| 01/23 02:00 | 数据库维护 | 5分钟只读     | @dba-team     |
| 01/24 14:00 | 主要发布v5.0   | 密切监控     | @release-team |
| 01/25       | 营销活动   | 预期流量翻倍 | @platform     |

---

## 升级提醒

| 问题类型      | 首次升级     | 第二次升级 |
| --------------- | -------------------- | ----------------- |
| 支付问题  | @payments-oncall     | @payments-manager |
| 认证问题     | @auth-oncall         | @security-team    |
| 数据库问题 | @dba-team            | @infra-manager    |
| 未知/严重  | @engineering-manager | @vp-engineering   |

---

## 快速参考

### 常用命令

```bash
# 检查服务健康
kubectl get pods -A | grep -v Running

# 最近部署
kubectl get events --sort-by='.lastTimestamp' | tail -20

# 数据库连接
psql -c "SELECT count(*) FROM pg_stat_activity;"

# 清空缓存 (紧急情况)
redis-cli FLUSHDB
```

重要链接


交接清单

离岗工程师

  • [x] 记录活动事件
  • [x] 记录进行中调查
  • [x] 列出最近变更
  • [x] 注明已知问题
  • [x] 添加即将事件
  • [x] 与接班工程师同步

接班工程师

  • [ ] 阅读本文档
  • [ ] 加入同步通话
  • [ ] 验证PagerDuty是否路由到您
  • [ ] 验证Slack通知是否工作
  • [ ] 检查VPN/访问是否工作
  • [ ] 审查关键仪表板

### 模板2: 快速交接 (异步)

```markdown
# 快速交接: @alice → @bob

## 摘要
- 无活动事件
- 1项调查进行中 (API超时,见ENG-1234)
- 明天主要发布 (01/24) - 准备好应对问题

## 监控列表
1. UTC时间02:00-03:00的API延迟 (备份窗口)
2. 认证服务内存 (如果 > 80% 重启)

## 最近
- 昨天部署了api-gateway v3.2.1 (稳定)
- 速率限制增加到1500 RPS

## 即将发生
- 01/23 02:00 - 数据库维护 (5分钟只读)
- 01/24 14:00 - v5.0发布

## 有问题吗?
我今天在Slack上可用直到17:00。

模板3: 事件交接 (事件中)

# 事件交接: 支付服务降级

**事件开始**: 2024-01-22 08:15 UTC
**当前状态**: 缓解中
**严重性**: SEV2

---

## 当前状态

- 错误率: 15% (从40%下降)
- 缓解进行中: 扩展Pod
- 解决预计时间: ~30分钟

## 我们知道什么

1. 根因: 支付服务Pod的内存压力
2. 触发: 异常流量激增 (正常3倍)
3. 促成因素: 结账流程中的低效查询

## 我们做了什么

- 扩展支付服务从5 → 15 Pods
- 启用结账端点的速率限制
- 禁用非关键功能

## 需要发生什么

1. 监控错误率 - 应在~15分钟内达到 <1%
2. 如果没有改善,升级到 @payments-manager
3. 稳定后,开始根因调查

## 关键人员

- 事件指挥官: @alice (交接中)
- 通信负责人: @charlie
- 技术负责人: @bob (接班)

## 通信

- 状态页面: 更新于08:45
- 客户支持: 已通知
- 执行团队: 已知晓

## 资源

- 事件频道: #inc-20240122-payment
- 仪表板: [支付服务](https://grafana/d/payments)
- 运行手册: [支付降级](https://wiki/runbooks/payments)

---

**接班值班员 (@bob) - 请确认您有:**

- [ ] 加入 #inc-20240122-payment
- [ ] 访问仪表板
- [ ] 理解当前状态
- [ ] 知道升级路径

交接同步会议

议程 (15分钟)

## 交接同步: @alice → @bob

1. **活动问题** (5分钟)
   - 浏览任何进行中事件
   - 讨论调查状态
   - 传递上下文和理论

2. **最近变更** (3分钟)
   - 需关注的部署
   - 配置变更
   - 已知回归

3. **即将事件** (3分钟)
   - 维护窗口
   - 预期流量变化
   - 计划发布

4. **问题** (4分钟)
   - 澄清任何不清楚之处
   - 确认访问和警报
   - 交换联系信息

值班最佳实践

班次前

## 班次前清单

### 访问验证

- [ ] VPN工作
- [ ] kubectl访问所有集群
- [ ] 数据库读取访问
- [ ] 日志聚合器访问 (Splunk/Datadog)
- [ ] PagerDuty应用已安装并登录

### 警报设置

- [ ] PagerDuty排班显示您为主要人员
- [ ] 电话通知已启用
- [ ] 事件频道的Slack通知
- [ ] 测试警报已接收并确认

### 知识复习

- [ ] 审查最近事件 (过去2周)
- [ ] 检查服务变更日志
- [ ] 略读关键运行手册
- [ ] 知道升级联系人

### 环境准备

- [ ] 笔记本电脑已充电且可访问
- [ ] 电话已充电
- [ ] 通话的安静空间可用
- [ ] 识别备用联系人 (如果旅行)

班次期间

## 日常值班例行

### 早上 (工作日开始)

- [ ] 检查夜间警报
- [ ] 审查仪表板异常
- [ ] 检查任何P0/P1工单创建
- [ ] 略读事件频道获取上下文

### 全天

- [ ] 在SLA内响应警报
- [ ] 记录调查进展
- [ ] 更新团队重要问题
- [ ] 分诊传入页面

### 工作日结束

- [ ] 交接任何活动问题
- [ ] 更新调查文档
- [ ] 注明下个班次内容

班次后

## 班次后清单

- [ ] 完成交接文档
- [ ] 与接班值班员同步
- [ ] 验证PagerDuty路由已更改
- [ ] 关闭/更新调查工单
- [ ] 为任何事件填写事后分析
- [ ] 如果班次压力大,休息

升级指南

何时升级

## 升级触发

### 立即升级

- SEV1事件宣布
- 怀疑数据泄露
- 30分钟内无法诊断
- 收到客户或法律升级

### 考虑升级

- 问题跨多个团队
- 需要您不具备的专业知识
- 业务影响超过阈值
- 您对下一步不确定

### 如何升级

1. 页面适当的升级路径
2. 在Slack中提供简要上下文
3. 保持参与直到升级确认
4. 清晰交接,不要直接消失

最佳实践

要做的事

  • 记录一切 - 未来的您会感谢
  • 尽早升级 - 安全总比遗憾好
  • 休息 - 警报疲劳是真实的
  • 保持交接同步 - 异步会丢失上下文
  • 测试设置 - 事件前,不是事件中

不要做的事

  • 不要跳过交接 - 上下文丢失导致事件
  • 不要英雄 - 需要时升级
  • 不要忽略警报 - 即使它们看起来次要
  • 不要带病工作 - 换班代替
  • 不要消失 - 班次期间保持可联系

资源

内存协议 (强制)

开始前: 阅读 .claude/context/memory/learnings.md

完成后:

  • 新模式 -> .claude/context/memory/learnings.md
  • 发现问题 -> .claude/context/memory/issues.md
  • 决策 -> .claude/context/memory/decisions.md

假设中断: 如果不在内存中,就没发生。