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

从S3同步Airflow DAG导致任务执行失败问题排查

排查Airflow DAG无法识别问题的实操步骤

1. 直接验证DAG文件的有效性

进入Airflow Pod,执行以下命令检查文件是否能被正常解析:

# 列出该文件中包含的DAG
airflow dags list -f /opt/airflow/dags/repo/dags/dag_manual.py
# 详细解析文件并输出错误
airflow dags parse --subdir /opt/airflow/dags/repo/dags/dag_manual.py

如果文件存在语法错误、依赖缺失或DAG定义问题,这里会直接输出具体报错。同时严格确认DAG文件中定义的dag_id与执行命令时使用的DAG_MANUAL完全一致——Airflow的DAG ID区分大小写,哪怕字母大小写不同都会导致识别失败。

2. 检查Airflow的DAG扫描路径配置

  • 查看当前Airflow的核心DAG目录配置:
    airflow config get-value core dags_folder
    
    如果默认目录是/opt/airflow/dags,而你的DAG存放在/opt/airflow/dags/repo/dags/子目录下,需要确保Airflow会扫描子目录,且未通过core.dag_ignore_patterns排除该路径。
  • 若需要添加额外扫描路径,在Helm的values.yaml中配置:
    airflow:
      config:
        core:
          dags_folder: "/opt/airflow/dags,/opt/airflow/dags/repo/dags"
    
    更新配置后重启Airflow组件生效。

3. 确认文件与目录权限

检查DAG文件及父目录的权限,确保Airflow运行用户(通常为airflow)有读取权限:

ls -l /opt/airflow/dags/repo/dags/dag_manual.py
ls -ld /opt/airflow/dags/repo/dags/

文件权限至少需为644,目录权限至少为755。如果S3同步工具以root用户写入文件,可在Helm配置中调整Pod的securityContext,让容器以airflow用户运行。

4. 查看调度器日志获取解析细节

调度器会定期扫描DAG目录,其日志中可能包含任务执行报错未体现的解析失败信息:

kubectl logs <airflow-scheduler-pod-name> | grep "dag_manual.py"

重点关注是否有导入错误、依赖缺失等提示。

5. 验证S3同步的文件完整性

对比Pod内文件与S3源文件的MD5值,确认同步过程中未出现文件损坏或截断:

md5sum /opt/airflow/dags/repo/dags/dag_manual.py

将结果与S3控制台中对应文件的MD5值对比。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:43:18