Lorsque le serveur Web Airflow affiche des erreurs telles que Broken DAG: [<path/to/dag>] <error>
, comment et où trouver la trace de pile complète pour ces exceptions?
J'ai essayé ces endroits:
/var/log/airflow/webserver
- n'avait aucun journal dans le délai d'exécution, les autres journaux étaient en binaire et le décodage avec strings
ne donnait aucune information utile.
/var/log/airflow/scheduler
- avait quelques journaux mais était sous forme binaire, a essayé de les lire et semblait être principalement des journaux sqlalchemy probablement pour la base de données d'Airflow.
/var/log/airflow/worker
- affiche les journaux pour l'exécution des DAG (identiques à ceux que vous voyez sur la page de flux d'air)
puis aussi sous /var/log/airflow/rotated
- impossible de trouver la trace de pile que je cherchais.
J'utilise airflow v1.7.1.3
Habituellement, j'utilisais la commande airflow list_dags
qui affiche la trace de pile complète pour python trouvée dans les dags.
Cela fonctionnera avec presque toutes les commandes d'airflow en tant que dossier dags d'analyse d'airflow chaque fois que vous utilisez une commande CLI airflow.
Si vous souhaitez compiler et voir une erreur de syntaxe, vous pouvez également essayer python your_dag.py
Ce que vous voulez faire, c'est accéder aux journaux internes du serveur Web afin d'obtenir la trace de pile complète. Mon serveur Airflow est exécuté dans une image Docker, je vais donc utiliser Docker pour récupérer ces journaux, mais l'idée demeure.
docker ps
docker logs [PID]
Cela devrait contenir les informations exactes sur les raisons de l'échec de votre génération DAG.