web-dev-qa-db-fra.com

Débogage des DAG cassés

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

13
arbazkhan002

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.

9
Babcool

Si vous souhaitez compiler et voir une erreur de syntaxe, vous pouvez également essayer python your_dag.py

2
Chengzhi

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.

  1. docker ps
  2. récupérer le PID du serveur web
  3. docker logs [PID]
  4. lire les journaux complets du serveur Web Airflow donné.

Cela devrait contenir les informations exactes sur les raisons de l'échec de votre génération DAG.

1
belka