我正在使用Docker Apache Airflow版本1.9.0-2 (https://github.com/puckel/docker-airflow)。
调度程序生成了大量的日志,文件系统很快就会耗尽空间,因此我正在尝试通过编程方式删除由airflow创建的调度程序日志,这些日志位于调度程序容器中 (/usr/local/airflow/logs/scheduler)。
我已经设置好了所有这些维护任务:https://github.com/teamclairvoyant/airflow-maintenance-dags
然而,这些任务只会在worker上删除日志,而调度程序日志位于调度程序容器中。
我还设置了远程日志记录,将日志发送到S3,但如在此SO帖子中提到的Removing Airflow task logs,此设置无法阻止airflow写入本地机器。
此外,我还尝试创建一个共享命名卷,介绍如下Docker Compose - Share named volume between multiple containers。 然而,在worker中出现以下错误:
ValueError: Unable to configure handler 'file.processor': [Errno 13] Permission denied: '/usr/local/airflow/logs/scheduler'
在scheduler中出现以下错误:
ValueError: Unable to configure handler 'file.processor': [Errno 13] Permission denied: '/usr/local/airflow/logs/scheduler/2018-04-11'
那么,人们如何删除调度程序日志呢?
/usr/local/bin/docker-compose exec -T scheduler bash -c "rm -rf /usr/local/airflow/logs/scheduler/*"
并使用以下 cron 表达式运行它0 0 * * * cd /path/to/script && /bin/bash ./cleanup.sh 1> /tmp/success.txt 2> /tmp/err.txt
。 - Ryan Stack