由于无法获取日志文件并且无法读取日志,导致气流任务间歇性失败

时间:2020-03-25 15:43:04

标签: airflow

我正在运行每天运行一次的DAG。它从9个同时执行的任务同时执行相同的任务开始-基本上每个任务都轮询S3以查看任务的指定1文件是否存在。每个任务在Airflow中都是相同的代码,并且以相同的方式放入结构中。我有其中一项任务,在随机的日子里,它无法“开始”-不会进入running阶段。它只是作为queued而坐。当它这样做时,这就是它的日志所说的

*** Log file isn't local.
*** Fetching here: http://:8793/log/my.dag.name./my_airflow_task/2020-03-14T07:00:00
*** Failed to fetch log file from worker.

*** Reading remote logs...
Could not read logs from s3://mybucket/airflow/logs/my.dag.name./my_airflow_task/2020-03-14T07:00:00

为什么这只会在随机的日子发生?我所见过的所有类似问题都指出此错误持续发生,一旦克服,便不再继续。为了将这个任务“欺骗”为“运行”,我手动touch手动更改日志文件的名称,然后将其更改为running

1 个答案:

答案 0 :(得分:0)

因此,问题似乎与该特定任务的日志写入到的文件夹有关的系统所有权规则有关。当我将Airflow的Python代码更新到生产环境时,我使用了CI工具来运送新的task_3,因此该任务是通过这种方式创建的。当我达到日志目录所有权的峰值时,我注意到了以下任务:

# inside/airflow/log/dir: 

drwxrwxr-x 2 root    root     4096 Mar 25 14:53 task_3  # is the offending task
drwxrwxr-x 2 airflow airflow 20480 Mar 25 00:00 task_2
drwxrwxr-x 2 airflow airflow 20480 Mar 25 15:54 task_1

所以,我认为这是随机发生的,Airflow无法获得写日志文件的权限,因此它不会启动其余任务。当我使用类似chown的命令应用适当的sudo chown -R airflow:airflow task_3命令时。自从我更改此设置以来,问题就消失了。