外观
调度失败告警与值班处置清单
难度与前置
难度:入门
前置:能看任务日志与依赖;知道谁是业务 owner。
读完能做什么:按分级告警与标准处置清单完成「止血 → 修复 → 补数 → 复盘」,避免群里无序 @ 与重复踩坑。
适用场景
- 离线任务失败、超时、空分区假成功触发告警
- 需要 oncall 在约定时间内响应并保证 SLA
- 想把「老员工口头经验」写成可交接清单
不适用:
- 无监控的私有脚本(先接入调度与告警)
- 纯开发联调失败(走开发群,不占 P0 oncall)
- 基础设施全挂(走平台值班升级通道)
真实场景(一条)
早高峰 08:40:dwd_ad_spend_detail_di 失败,群里 20 人同时问「报表还会出吗」。无清单时值班只盯着重跑,忽略上游文件未到,重跑三次仍失败,09:30 SLA 违约。
引入处置清单后:先看告警级别与依赖水位 → 确认源文件延迟 → 公告业务延迟到 10:00 → 源到齐后按分区级联重跑 → 30 分钟内复盘记「上游延迟」根因。同年同型事故缩短至一次告警闭环。
怎么做(步骤清单)
1. 告警分级(与业务影响绑定)
| 级别 | 典型条件 | 响应 | 通知 |
|---|---|---|---|
| P0 | 核心 ADS/对账链路失败或 SLA 必违约 | 5~15 分钟 | 电话 + 值班群 |
| P1 | 重要 DWD/DWS 失败,仍有缓冲 | 30 分钟 | 值班群 @ |
| P2 | 非核心、重试可自愈 | 工作时间 | 群通知 |
| P3 | 质量预警、资源排队 | 记录 | 周报 |
告警标题模板:[P0][投放][dt=2026-09-25] dwd_ad_spend_detail_di FAILED | SLA 09:30。
2. 接警后 5 分钟内动作(止血)
- 认领:回复「已接,ETA 下一次更新时间」
- 看影响面:哪些下游、是否已到 SLA 预警点
- 看依赖:上游是否未就绪 / 空分区(对照 freshness)
- 看是否自动重试中:避免双手同时点重跑
text
公告模板:
【数据延迟】ads_ad_daily_report_1d dt=${biz_date}
原因:上游渠道文件延迟(排查中/已确认)
原 SLA:09:30 → 预计:10:00
影响:运营日报
值班:@xxx 下一更新:09:203. 定位(日志与分类)
常见根因桶(复盘打标用):
- 上游数据延迟 / 缺失
- SQL / 代码缺陷
- 资源不足排队、Yarn/K8s 失败
- 权限 / 路径 / 元数据
- 质量门禁拦截(应视为保护而非纯故障)
bash
# 示意:拉任务日志关键错误
rg -n "ERROR|Exception|Permission|FileNotFound|OutOfMemory" job.log | tail -804. 修复与重跑安全
遵循 补数/重跑:
- 确认写入幂等(分区覆盖 / 去重)
- 只重跑失败分区
dt,避免全历史 - 上游 ok → 本层 → 级联下游
- 重跑后跑最小验收 SQL(行数、金额、主键)
sql
-- 最小验收
SELECT COUNT(*) AS cnt, SUM(cost_amount) AS cost
FROM dwd_ad_spend_detail_di
WHERE dt = '${biz_date}';5. 升级条件
- 响应时限内无法定位
- 需要平台改权限/扩容
- 业务要求强制出数但数据未到(需产品/业务决策「空数 or 延迟」)
- 怀疑大面积机房/集群故障
升级时带上:已做步骤、日志摘要、影响表、业务选择项。
6. 销警与复盘
销警条件:下游关键验收通过 + 业务公告「已恢复」或「已延期交付」。
24~48h 内写短复盘:
| 项 | 内容 |
|---|---|
| 时间线 | 告警→认领→根因→恢复 |
| 根因桶 | 见上 |
| 动作 | 临时 / 永久(监控、依赖、代码) |
| 是否改 SLA / 依赖 | 是/否 |
7. 值班轮换与工具清单
交接时确认:
- 当前 P0 未销警工单
- 核心表今日 SLA 时刻表(上海时区)
- 调度 UI、日志、Yarn/K8s、质量平台、业务公告群入口
- 升级人:平台值班 / 主题 owner / 业务联系人
text
工具最小集:
- 调度:失败实例、依赖图、重跑入口
- 元数据:分区是否存在、行数
- 质量:规则结果
- 沟通:值班群公告模板8. 假成功专项
「退出码 0 但数据不可用」必须进 P0/P1:
- 行数为 0 或低于下限
- 对账 diff 超阈值被跳过
- 写出分区但路径错误
处理:改调度断言或质量门禁为失败;按空分区事故公告与补数。
常见坑(至少牢记这些)
不认领导致多人同时重跑
双写风险与更乱的状态。盲目重跑同一失败任务
上游未到时重跑 N 次只会刷屏。修完本层不级联下游
「任务绿了」但 ADS 仍是旧数/空数。质量失败当成功跳过
为赶 SLA 跳过门禁,把脏数据喂给业务。无公告
业务按点开会用数,信任崩塌比技术故障更贵。复盘只写「已重跑成功」
没有根因桶与防再发,下周同样告警。
如何验收(可量化)
- [ ] P0/P1 分级与通知通道演练通过
- [ ] 值班手册含:接警、公告模板、重跑顺序、升级条件
- [ ] 抽样一次故障:认领≤响应时限,有公告与复盘
- [ ] 重跑后有验收 SQL 记录
- [ ] 周报含:失败次数、MTTR、根因分布
bash
# 示意:从告警系统导出 MTTR
# mttr_minutes = resolve_ts - alert_ts
echo "week,p0_count,mttr_p50,mttr_p95" >> oncall_kpi.csvsql
-- 销警前验收示例
SELECT
(SELECT COUNT(*) FROM dwd_ad_spend_detail_di WHERE dt='${biz_date}') AS dwd_cnt,
(SELECT COUNT(*) FROM ads_ad_daily_report_1d WHERE dt='${biz_date}') AS ads_cnt;相关面试题
占位:与题库小程序对齐后补链接(建议关联:调度告警、值班 oncall、补数安全、SLA 违约处置)。
改写说明:结构与判断标准参考 Wood 原创数仓/面试文,已改写成可执行清单;未包含未公开公司数据与内部表名。