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.

NVLAN - Consultoria