Airflow géré (3e génération) | Airflow géré (2e génération) | Airflow géré (1re génération héritée)
Cette page ne traite que des problèmes liés au traitement des fichiers DAG. Pour résoudre les problèmes de planification des tâches, consultez Résoudre les problèmes liés au programmeur Airflow.
Résoudre un problème lié aux workflows
Inspecter les journaux du processeur DAG
Si vous avez des DAG complexes, les processeurs DAG Airflow peuvent ne pas tous les analyser. Cela peut entraîner de nombreux problèmes présentant les symptômes suivants.
Symptômes :
Si un processeur DAG rencontre des problèmes lors de l'analyse de vos DAG, cela peut entraîner une combinaison des problèmes listés. Si les DAG sont générés de manière dynamique, ces problèmes peuvent avoir un impact plus important que les DAG statiques.
- Les DAG ne sont pas visibles dans l'interface utilisateur Airflow ni dans l'interface utilisateur DAG.
- Les DAG ne sont pas planifiés pour l'exécution.
- Des erreurs s'affichent dans les journaux du processeur DAG, par exemple :
dag-processor-manager [2023-04-21 21:10:44,510] {manager.py:1144} ERROR - Processor for /home/airflow/gcs/dags/dag-example.py with PID 68311 started at 2023-04-21T21:09:53.772793+00:00 has timed out, killing it.ou
dag-processor-manager [2023-04-26 06:18:34,860] {manager.py:948} ERROR - Processor for /home/airflow/gcs/dags/dag-example.py exited with return code 1.Les processeurs DAG rencontrent des problèmes qui entraînent le redémarrage du programmeur Airflow.
Les tâches Airflow planifiées pour l'exécution sont annulées et les exécutions de DAG pour les DAG qui n'ont pas pu être analysés peuvent être marquées comme
failed. Exemple :airflow-scheduler Failed to get task '<TaskInstance: dag-example.task1--1 manual__2023-04-17T10:02:03.137439+00:00 [removed]>' for dag 'dag-example'. Marking it as removed.
Solution :
Augmentez les paramètres liés à l'analyse des DAG :
Augmentez
[core]dagbag_import_timeoutà au moins 120 secondes (ou plus, si nécessaire).Increase
[core]dag_file_processor_timeoutà au moins 180 secondes (ou plus, si nécessaire). Cette valeur doit être supérieure à[core]dagbag_import_timeout.
Corrigez ou supprimez les DAG qui posent problème aux processeurs DAG.
Inspecter les durées d'analyse des DAG
Pour vérifier si le problème se produit au moment de l'analyse du DAG, procédez comme suit :
Console
Dans la Google Cloud console, vous pouvez utiliser la page Monitoring et l'onglet Logs pour inspecter les durées d'analyse des DAG.
Inspectez les durées d'analyse des DAG à l'aide de la page de surveillance de Managed Service pour Apache Airflow :
Dans la Google Cloud console, accédez à la page Environments (Environnements).
Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Monitoring (Surveillance) s'ouvre.
Dans l'onglet Monitoring (Surveillance), sélectionnez DAG Statistics (Statistiques DAG) et examinez le graphique Total parse time for all DAG files (Durée d'analyse totale de tous les fichiers DAG) pour identifier les problèmes potentiels. Nous vous recommandons de surveiller ce graphique pendant un certain temps pour identifier les problèmes d'analyse des DAG sur plusieurs cycles d'analyse des DAG.
Inspectez les durées d'analyse des DAG à l'aide de l'onglet Managed Service for Apache Airflow Logs (Journaux de Managed Service pour Apache Airflow) :
Dans la Google Cloud console, accédez à la page Environments (Environnements).
Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Monitoring (Surveillance) s'ouvre.
Accédez à l'onglet Logs (Journaux), puis, dans l'arborescence de navigation All logs (Tous les journaux), sélectionnez la section DAG processor manager (Gestionnaire de processeurs DAG).
Examinez les journaux
dag-processor-manageret identifiez les problèmes potentiels.
gcloud
Exécutez la commande dags report pour afficher le temps d'analyse de tous vos DAG.
gcloud composer environments run ENVIRONMENT_NAME \
--location LOCATION \
dags report
Remplacez :
ENVIRONMENT_NAMEpar le nom de l'environnement.LOCATIONpar la région dans laquelle se trouve l'environnement.
Le résultat de la commande ressemble à ceci :
file | duration | dag_num | task_num | dags
======================+================+=========+==========+===================
/manydagsbig.py | 0:00:00.038334 | 2 | 10 | serial-0,serial-0
/airflow_monitoring.py| 0:00:00.001620 | 1 | 1 | airflow_monitoring
Recherchez la valeur duration (durée) pour chacun des DAG listés dans le tableau. Une valeur élevée peut indiquer que l'un de vos DAG n'est pas mis en œuvre de manière optimale. La table de sortie vous permet d'identifier les DAG dont la durée d'analyse est longue.
Résoudre les problèmes rencontrés au moment de l'analyse du DAG
Les sections suivantes décrivent les symptômes et les correctifs potentiels pour certains problèmes courants qui surviennent au moment de l'analyse du DAG.
Nombre limité de threads
Le fait d'autoriser les processeurs DAG à utiliser un nombre limité de threads peut avoir une incidence sur le temps d'analyse des DAG.
Pour résoudre ce problème, remplacez l'option de configuration [scheduler]parsing_processes
Airflow. Définissez la valeur initiale sur le nombre de processeurs virtuels utilisés par le programmeur, moins un processeur. Par exemple, si le programmeur utilise deux processeurs virtuels, définissez cette valeur sur 1. Ajustez ensuite l'allocation des ressources du programmeur afin qu'il fonctionne à environ 70 % de sa capacité de processeur virtuel ou de mémoire.
Forcer le processeur DAG à ignorer les fichiers inutiles
Vous pouvez améliorer les performances du processeur DAG Airflow (qui s'exécute avec le programmeur Airflow dans Airflow géré (2e génération)) en ignorant les fichiers inutiles dans le dossier des DAG. Le processeur DAG Airflow ignore tous les fichiers et dossiers spécifiés dans le fichier.airflowignore.
Pour que le processeur DAG Airflow ignore les fichiers inutiles, procédez comme suit :
- Créez un fichier
.airflowignore. - Dans ce fichier, répertoriez les fichiers et dossiers à ignorer.
- Importez ce fichier dans le dossier
/dagsdu bucket de votre environnement.
Pour en savoir plus sur le format de fichier .airflowignore, consultez
la documentation Airflow.
Airflow traite les DAG interrompus
Vous pouvez interrompre les DAG pour les empêcher de s'exécuter. Cela permet d'économiser les ressources des nœuds de calcul Airflow.
Les processeurs DAG Airflow continuent d'analyser les DAG interrompus. Si vous souhaitez
améliorer les performances des processeurs DAG, utilisez
.airflowignore ou supprimez
les DAG interrompus du dossier des DAG.
Problèmes courants
Les sections suivantes décrivent les symptômes et les correctifs potentiels pour certains problèmes d'analyse courants.
Délai avant expiration de l'importation du chargement DAG
Symptôme :
- Dans l'interface Web Airflow, en haut de la page contenant la liste des DAG, une zone d'alerte rouge indique
Broken DAG: [/path/to/dagfile] Timeout. Dans Cloud Monitoring, les journaux
airflow-schedulercontiennent des entrées semblables à :ERROR - Process timed outERROR - Failed to import: /path/to/dagfileAirflowTaskTimeout: Timeout
Correctif :
Remplacez l'option de configuration Airflow dag_file_processor_timeout
et allouez plus de temps à l'analyse du DAG.
| Section | Clé | Valeur |
|---|---|---|
core |
dag_file_processor_timeout |
Nouvelle valeur du délai |
Un DAG n'est pas visible dans l'interface utilisateur Airflow ni dans l'interface utilisateur DAG, et le programmeur ne le planifie pas
Le processeur DAG analyse chaque DAG avant que celui-ci puisse être planifié par le programmeur et avant qu'il ne devienne visible dans l'interface utilisateur Airflow ou l'interface utilisateur DAG.
Les options de configuration Airflow suivantes définissent les délais avant expiration pour l'analyse des DAG :
[core]dagbag_import_timeoutdéfinit le temps dont dispose le processeur DAG pour analyser un seul DAG.[core]dag_file_processor_timeoutdéfinit le temps total que le processeur DAG peut consacrer à l'analyse de tous les DAG.
Si un DAG n'est pas visible dans l'interface utilisateur Airflow ni dans l'interface utilisateur DAG :
Vérifiez les journaux du processeur DAG pour voir s'il est en mesure de traiter correctement votre DAG. En cas de problème, les entrées de journal suivantes peuvent s'afficher dans les journaux du processeur DAG ou du programmeur :
[2020-12-03 03:06:45,672] {dag_processing.py:1334} ERROR - Processor for /usr/local/airflow/dags/example_dag.py with PID 21903 started at 2020-12-03T03:05:55.442709+00:00 has timed out, killing it.Vérifiez les journaux du programmeur pour voir s'il fonctionne correctement. En cas de problème, les entrées de journal suivantes peuvent s'afficher dans les journaux du programmeur :
DagFileProcessorManager (PID=732) last sent a heartbeat 240.09 seconds ago! Restarting it Process timed out, PID: 68496
Solutions:
Corrigez toutes les erreurs d'analyse des DAG. Le processeur DAG analyse plusieurs DAG. Dans de rares cas, les erreurs d'analyse d'un DAG peuvent avoir un impact négatif sur l'analyse d'autres DAG.
Si l'analyse de votre DAG prend plus de temps que le nombre de secondes défini dans
[core]dagbag_import_timeout, augmentez ce délai.Si l'analyse de tous vos DAG prend plus de temps que le nombre de secondes défini dans
[core]dag_file_processor_timeout, augmentez ce délai.Si l'analyse de votre DAG prend beaucoup de temps, cela peut également signifier qu'il n'est pas mis en œuvre de manière optimale. Par exemple, s'il lit de nombreuses variables d'environnement ou s'il effectue des appels à des services externes ou à la base de données Airflow. Dans la mesure du possible, évitez d'effectuer de telles opérations dans les sections globales des DAG.
Augmentez les ressources de processeur et de mémoire du programmeur afin qu'il puisse fonctionner plus rapidement.
Augmentez le nombre de processus du processeur DAG afin que l'analyse puisse être effectuée plus rapidement. Pour ce faire, augmentez la valeur de
[scheduler]parsing_processes.
Étape suivante
- Résoudre les problèmes de synchronisation des fichiers
- Résoudre les problèmes liés au programmeur Airflow
- Découvrez comment résoudre les problèmes liés aux DAG.