web-dev-qa-db-fra.com

Supprimer les journaux Airflow Scheduler

J'utilise Docker Apache airflow VERSION 1.9.0-2 ( https://github.com/puckel/docker-airflow ). 

Le planificateur produit une quantité importante de journaux et le système de fichiers va rapidement manquer d'espace. J'essaie donc de supprimer par programme les journaux du planificateur créés par airflow, qui se trouvent dans le conteneur du planificateur dans (/ usr/local/airflow/logs/scheduler). )

J'ai toutes ces tâches de maintenance configurées: https://github.com/teamclairvoyant/airflow-maintenance-dags

Toutefois, ces tâches ne suppriment que les journaux sur le poste de travail et les journaux du planificateur se trouvent dans le conteneur du planificateur.

J'ai également configuré la journalisation à distance, en envoyant les journaux à S3, mais comme mentionné dans ce SO post Suppression des journaux de tâches de flux d'air cette configuration n'empêche pas le flux d'air d'écrire sur l'ordinateur local.

De plus, j'ai également essayé de créer un volume nommé partagé entre le travailleur et le planificateur, comme indiqué ci-après Composer avec Docker - Partager le volume nommé entre plusieurs conteneurs . Cependant, j'obtiens l'erreur suivante dans worker:

ValueError: Unable to configure handler 'file.processor': [Errno 13] Permission denied: '/usr/local/airflow/logs/scheduler'

et l'erreur suivante dans le planificateur:

ValueError: Unable to configure handler 'file.processor': [Errno 13] Permission denied: '/usr/local/airflow/logs/scheduler/2018-04-11'

Et alors, comment les gens suppriment-ils les journaux du planificateur?

7
Ryan Stack

Après pourrait être une option pour résoudre ce problème.

Connectez-vous au conteneur de menu fixe en utilisant le mécanisme suivant

#>docker exec -it <name-or-id-of-container> sh

Lors de l'exécution de la commande ci-dessus, assurez-vous que - conteneur est en cours d'exécution.

puis utilisez les travaux cron pour configurer la commande rm planifiée sur ces fichiers journaux.

2
fly2matrix

Inspiré par ce réponse, j'ai ajouté le DAG airflow-log-cleanup.py (avec quelques modifications à ses paramètres) de ici pour supprimer tout anciens journaux de flux d’air, y compris les journaux du planificateur. 

Mes modifications sont mineures, sauf que vu la taille de disque de mon EC2 (7,7G pour /dev/xvda1), la valeur par défaut de 30 jours pour DEFAULT_MAX_LOG_AGE_IN_DAYS semblait trop importante. environnement:

DEFAULT_MAX_LOG_AGE_IN_DAYS = Variable.get("max_log_age_in_days", 30) changé en DEFAULT_MAX_LOG_AGE_IN_DAYS = Variable.get("max_log_age_in_days", 14)

2
HaMi