name: 值班交接模式 description: 掌握值班交接模式,包括上下文转移、升级程序和文档。用于过渡值班职责、记录班次总结或改进值班流程。
值班交接模式
有效的值班交接模式,确保班次过渡的连续性、上下文转移和可靠的突发事件响应。
何时使用此技能
- 过渡值班职责
- 编写班次交接总结
- 记录正在进行中的调查
- 建立值班轮转程序
- 改进交接质量
- 入职新的值班工程师
核心概念
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 仪表盘加载慢
**解决方法**: 在 08:00 UTC 后等待 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
## TL;DR
- 无活跃突发事件
- 1 项调查正在进行中 (API 超时,见 ENG-1234)
- 明天主要发布 (01/24) - 准备应对问题
## 监控列表
1. 02:00-03:00 UTC 左右的 API 延迟 (备份窗口)
2. 认证服务内存 (如果 > 80% 则重启)
## 近期情况
- 昨天部署了 api-gateway v3.2.1 (稳定)
- 增加速率限制到 1500 RPS
## 即将发生
- 01/23 02:00 - 数据库维护 (5 分钟只读模式)
- 01/24 14:00 - v5.0 发布
## 有问题吗?
我将在今天 17:00 之前在 Slack 上可用。
模板 3: 突发事件交接 (突发事件中)
# 突发事件交接: 支付服务降级
**突发事件开始**: 2024-01-22 08:15 UTC
**当前状态**: 缓解中
**严重性**: SEV2
---
## 当前状态
- 错误率: 15% (从 40% 下降)
- 缓解措施进行中: 扩展 Pod
- 预计解决时间: 约 30 分钟
## 我们所知
1. 根本原因: 支付服务 Pod 内存压力
2. 触发因素: 异常流量激增 (3 倍正常值)
3. 贡献因素: 结账流程中的低效查询
## 我们已做
- 将支付服务从 5 个 Pod 扩展到 15 个
- 启用结账端点的速率限制
- 禁用非关键功能
## 需要做什么
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. 干净地交接,不要消失
最佳实践
要做
- 记录一切 - 未来的您会感谢您
- 早升级 - 安全比遗憾好
- 休息 - 警报疲劳真实存在
- 保持交接同步 - 异步会丢失上下文
- 测试您的设置 - 在突发事件前,而不是期间
不要做
- 不要跳过交接 - 上下文丢失会导致突发事件
- 不要英雄主义 - 需要时升级
- 不要忽略警报 - 即使看起来微小
- 不要带病工作 - 换班
- 不要消失 - 值班期间保持可联系