Skip to content

调度失败告警与值班处置清单 ​

难度与前置

难度:入门
前置:能看任务日志与依赖;知道谁是业务 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 分钟内动作(止血) ​

  1. 认领:回复「已接,ETA 下一次更新时间」
  2. 看影响面:哪些下游、是否已到 SLA 预警点
  3. 看依赖:上游是否未就绪 / 空分区(对照 freshness)
  4. 看是否自动重试中:避免双手同时点重跑
text
公告模板:
【数据延迟】ads_ad_daily_report_1d dt=${biz_date}
原因:上游渠道文件延迟(排查中/已确认)
原 SLA:09:30 → 预计:10:00
影响:运营日报
值班:@xxx 下一更新:09:20

3. 定位(日志与分类) ​

常见根因桶(复盘打标用):

  • 上游数据延迟 / 缺失
  • SQL / 代码缺陷
  • 资源不足排队、Yarn/K8s 失败
  • 权限 / 路径 / 元数据
  • 质量门禁拦截(应视为保护而非纯故障)
bash
# 示意:拉任务日志关键错误
rg -n "ERROR|Exception|Permission|FileNotFound|OutOfMemory" job.log | tail -80

4. 修复与重跑安全 ​

遵循 补数/重跑:

  1. 确认写入幂等(分区覆盖 / 去重)
  2. 只重跑失败分区 dt,避免全历史
  3. 上游 ok → 本层 → 级联下游
  4. 重跑后跑最小验收 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. 值班轮换与工具清单 ​

交接时确认:

  1. 当前 P0 未销警工单
  2. 核心表今日 SLA 时刻表(上海时区)
  3. 调度 UI、日志、Yarn/K8s、质量平台、业务公告群入口
  4. 升级人:平台值班 / 主题 owner / 业务联系人
text
工具最小集:
- 调度:失败实例、依赖图、重跑入口
- 元数据:分区是否存在、行数
- 质量:规则结果
- 沟通:值班群公告模板

8. 假成功专项 ​

「退出码 0 但数据不可用」必须进 P0/P1:

  • 行数为 0 或低于下限
  • 对账 diff 超阈值被跳过
  • 写出分区但路径错误

处理:改调度断言或质量门禁为失败;按空分区事故公告与补数。

常见坑(至少牢记这些) ​

  1. 不认领导致多人同时重跑
    双写风险与更乱的状态。

  2. 盲目重跑同一失败任务
    上游未到时重跑 N 次只会刷屏。

  3. 修完本层不级联下游
    「任务绿了」但 ADS 仍是旧数/空数。

  4. 质量失败当成功跳过
    为赶 SLA 跳过门禁,把脏数据喂给业务。

  5. 无公告
    业务按点开会用数,信任崩塌比技术故障更贵。

  6. 复盘只写「已重跑成功」
    没有根因桶与防再发,下周同样告警。

如何验收(可量化) ​

  • [ ] P0/P1 分级与通知通道演练通过
  • [ ] 值班手册含:接警、公告模板、重跑顺序、升级条件
  • [ ] 抽样一次故障:认领≤响应时限,有公告与复盘
  • [ ] 重跑后有验收 SQL 记录
  • [ ] 周报含:失败次数、MTTR、根因分布
bash
# 示意:从告警系统导出 MTTR
# mttr_minutes = resolve_ts - alert_ts
echo "week,p0_count,mttr_p50,mttr_p95" >> oncall_kpi.csv
sql
-- 销警前验收示例
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 原创数仓/面试文,已改写成可执行清单;未包含未公开公司数据与内部表名。