O problema
A configuração padrão do Airflow, além de gerar muitos logs, gera uma pasta diferente para cada log gerado. O que inviabiliza uma gerência da informação e do espaço em disco. Como proposta de solução, sugerimos mudar a configuração para ser feita um arquivo de log para cada job ETL e usar o logrotate para manter esse log cíclico.
A solução (proposta)
Primeiro, localize onde estão os arquivos airflow.cfg, para isso use o comando:
find / -name airflow.cfg
Para cada arquivo encontrado, verifique na variável base_log_folder em que pasta os logs estão sendo salvos (em nosso caso, na pasta /opt/airflow/logs). Ainda nesse arquivo edite e localize a linha que contém a definição (não comentada) log_filename_template , comente essa linha e coloque a seguinte linha abaixo dela:
log_filename_template = {{ ti.dag_id }}_{{ ti.task_id }}.log |
Com isso, em vez de cada log ser salvo em uma pasta diferente, será salvo no mesmo arquivo de log. com isso, salve e saia do arquivo de configuração.
Depois de alterar todos os arquivos airflow.cfg, para configurar a limpeza automática desses logs (em nosso exemplo, deixando os últimos 15 dias de log) crie o arquivo /etc/logrotate.d/airflow com o seguinte conteúdo (altere as partes em cinza conforme a sua realidade):
/opt/airflow/logs/*.log { missingok notifempty rotate 15 compress copytruncate } |
Para finalizar essa nova configuração, se for possível, pare o Airflow, entre na pasta /opt/airflow/logs, apague os arquivos de logs de ETL e reinicie o servidor.
Fontes/Referências
https://airflow.apache.org/docs/apache-airflow/1.10.1/howto/write-logs.html
Mais Informações
Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.
Se você tem interesse em algum assunto específico, tem alguma dúvida que precisa de ajuda, ou quer sugerir um post, entre em contato conosco pelo e-mail equipe@nvlan.com.br.