You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Airflow 2.2.5:如何识别已标记为成功的失败DAG运行?

问题解答

1. 能否识别被重置为Success的失败DAG运行?

可以识别,核心是通过Airflow元数据库的dag_run、task_instance和log表关联查询,定位那些最终状态为Success,但中途存在任务耗尽重试次数失败后被修复重置的记录。

关键查询思路:

  • 目标DAG的dag_run状态为success,但关联的task_instance中存在任务达到最大尝试次数(max_tries = try_number),且该任务的前一次尝试状态为failed(说明之前重试耗尽失败过,最后一次是修复后成功)。
  • 或者通过log表查找包含重置操作的日志,确认DAG运行曾被手动/自动重置。

示例SQL:

方法1:从任务实例历史识别

SELECT dr.dag_id, dr.run_id, dr.start_date, dr.end_date
FROM dag_run dr
JOIN task_instance ti 
  ON dr.dag_id = ti.dag_id AND dr.run_id = ti.run_id
WHERE dr.dag_id = '你的目标DAG_ID'
  AND dr.state = 'success'
  AND ti.max_tries = ti.try_number
  AND EXISTS (
    SELECT 1 FROM task_instance ti_hist
    WHERE ti_hist.dag_id = ti.dag_id
      AND ti_hist.run_id = ti.run_id
      AND ti_hist.task_id = ti.task_id
      AND ti_hist.try_number = ti.try_number - 1
      AND ti_hist.state = 'failed'
  )
GROUP BY dr.dag_id, dr.run_id, dr.start_date, dr.end_date;

这个查询会找出:最终DAG成功,但存在任务在耗尽所有重试(比如配置3次重试则max_tries=4)后,最后一次尝试成功、但前一次尝试失败的DAG运行——这类记录就是你需要统计的“修复后重置成功”的案例。

方法2:从重置日志识别

SELECT DISTINCT dr.dag_id, dr.run_id
FROM dag_run dr
JOIN log l 
  ON dr.dag_id = l.dag_id AND dr.run_id = l.execution_date
WHERE dr.dag_id = '你的目标DAG_ID'
  AND dr.state = 'success'
  AND l.message LIKE '%Resetting dag run%';

通过日志中“重置DAG运行”的关键字,直接定位曾被重置过的成功DAG运行。

2. 如何检查Airflow是否发送了失败邮件?

根据Airflow版本和配置不同,有几种方式:

方式1:查询Airflow通知表(2.3+版本)

Airflow 2.3及以上版本新增了notification表,专门存储通知发送记录,可直接查询:

SELECT * FROM notification
WHERE dag_id = '你的目标DAG_ID'
  AND notification_type = 'email'
  AND status = 'success' -- 邮件发送成功状态
  AND message LIKE '%failed%'; -- 筛选失败相关的邮件

方式2:查看Airflow日志

如果是旧版本没有notification表,直接搜索Airflow调度器或Worker的日志,关键词可以用:

  • Sent an alert email to
  • Failed to send alert email(如果发送失败)
  • 结合目标DAG的run_id或失败时间点过滤,能快速找到邮件发送记录。

方式3:检查SMTP服务器日志

如果公司有统一的SMTP邮件服务器,可以查询服务器的发送日志,根据收件人邮箱、发送时间(对应DAG失败的时间点)来确认是否发送了失败通知邮件。


内容的提问来源于stack exchange,提问作者Gabe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 19:40:24