使用Airflow SequentialExecutor时,工作节点错误日志在哪查看?
因为你使用的是SequentialExecutor,它属于单进程执行模式,没有独立的工作节点,任务直接由调度器进程运行,以下是几个关键排查方向:
直接查看本地日志目录
Airflow默认将任务日志存储在$AIRFLOW_HOME/logs目录下,路径结构为logs/<dag_id>/<task_id>/<execution_date>。即使WebUI显示日志为空,本地文件可能仍保留了执行细节,直接前往该路径找到对应日志文件查看即可。确认Airflow日志配置与目录权限
打开airflow.cfg检查core.log_folder配置项,确认日志目录路径正确;同时要确保Airflow运行进程对该目录拥有读写权限——权限不足会导致日志无法写入,进而出现WebUI日志为空的情况。手动重定向任务输出
修改BashOperator的命令,强制将输出重定向到本地文件,示例如下:task1 = BashOperator( task_id="hello_task", bash_command="echo hello world! > /tmp/hello_task.log 2>&1" )执行任务后查看
/tmp/hello_task.log,可以直接获取命令执行的标准输出和错误输出,排查命令本身的问题。查询元数据库获取错误信息
使用SQLite命令行工具打开Airflow的元数据库(默认文件为airflow.db),查询task_instance表的错误字段:sqlite3 airflow.db "SELECT task_id, state, last_failure_message FROM task_instance WHERE dag_id='hello_world_dag';"其中
last_failure_message字段可能会记录WebUI日志中未显示的错误原因。
另外,你的DAG中start_date设置为2023年1月16日(过去的日期),手动运行时要确认选择的执行日期合理,不过这一般不会直接导致任务失败,可作为额外检查点。
内容的提问来源于stack exchange,提问作者JerryDeveloper

