Surveiller des environnements avec Cloud Monitoring

Cloud Composer 1 | Cloud Composer 2

Vous pouvez utiliser Cloud Monitoring et Cloud Logging avec Cloud Composer.

Cloud Monitoring vous offre une réelle visibilité sur les performances, le temps d'activité et l'état général de vos applications cloud. Cloud Monitoring collecte et ingère des métriques, des événements et des métadonnées à partir de Cloud Composer pour générer des insights dans des tableaux de bord et des graphiques. Vous pouvez utiliser Cloud Monitoring pour comprendre les performances et l'état de vos environnements Cloud Composer et des métriques Airflow.

Logging enregistre les journaux produits par les conteneurs de planificateur et de nœuds de calcul dans le cluster de votre environnement. Ces journaux contiennent des informations sur les dépendances au niveau du système et Airflow pour faciliter le débogage. Pour en savoir plus sur l'affichage des journaux, consultez la page Afficher les journaux Airflow.

Avant de commencer

  • Les autorisations suivantes sont requises pour accéder aux journaux et aux métriques de votre environnement Cloud Composer:

    • Accès en lecture seule aux journaux et aux métriques : logging.viewer et monitoring.viewer
    • Accès en lecture seule aux journaux, y compris les journaux privés : logging.privateLogViewer
    • Accès en lecture/écriture aux métriques : monitoring.editor

    Pour en savoir plus sur les autres autorisations et rôles associés à Cloud Composer, consultez la page Contrôle des accès.

  • Pour éviter la journalisation en double, Cloud Logging pour Google Kubernetes Engine est désactivé.

  • Cloud Logging génère une entrée pour chaque état et événement se produisant dans votre projet Google Cloud. Vous pouvez utiliser des filtres d'exclusion pour réduire le volume des journaux, y compris ceux générés par Cloud Logging pour Cloud Composer.

    L'exclusion de journaux de jobs.py peut entraîner des échecs de la vérification de l'état et des erreurs CrashLoopBackOff. Vous devez inclure -jobs.py dans les filtres d'exclusion pour éviter qu'il ne soit exclu.

  • Monitoring ne peut pas tracer les valeurs de décompte des DAG et des tâches qui s'exécutent plus d'une fois par minute, et ne trace pas de métriques pour les tâches ayant échoué.

Métriques d'environnement

Vous pouvez utiliser les métriques d'environnement pour vérifier l'utilisation des ressources et l'état de vos environnements Cloud Composer.

État de l'environnement

Pour vérifier l'état de votre environnement, vous pouvez utiliser la métrique d'état de fonctionnement suivante: composer.googleapis.com/environment/healthy.

Cloud Composer exécute un DAG d'activité nommé airflow_monitoring, qui s'exécute de manière planifiée et indique l'état de l'environnement comme suit:

  • Si l'exécution du DAG d'activité se termine correctement, l'état de fonctionnement est True.
  • Si l'exécution du DAG d'activité échoue, l'état de fonctionnement est False.

Le DAG d'activité est stocké dans le dossier dags/ et visible dans l'interface utilisateur d'Airflow. La fréquence et le contenu du DAG d'activité sont immuables et ne doivent pas être modifiés. Les modifications apportées au DAG d'activité ne sont pas conservées.

Vérification des dépendances de l'environnement

Cloud Composer vérifie régulièrement que l'environnement peut accéder aux services requis pour son fonctionnement et qu'il dispose des autorisations suffisantes pour interagir avec eux. Artifact Registry, Cloud Logging et Cloud Monitoring sont des exemples de services requis pour le fonctionnement de l'environnement.

Les métriques suivantes sont disponibles pour les vérifications des dépendances de l'environnement:

Métrique de dépendance API Description
Nombre de vérifications des dépendances composer.googleapis.com/environment/health/dependency_check_count Cette métrique permet de suivre le nombre de fois où des vérifications de joignabilité sont effectuées sur les services nécessaires au fonctionnement de l'environnement.
Nombre de vérifications d'autorisations de dépendance composer.googleapis.com/environment/health/dependency_permissions_check_count Cette métrique permet de suivre le nombre de fois que des vérifications d'autorisation sont effectuées sur les services requis pour le fonctionnement de l'environnement.

État de la base de données

Pour vérifier l'état de votre base de données, vous pouvez utiliser la métrique d'état de fonctionnement suivante: composer.googleapis.com/environment/database_health.

Le pod de surveillance Airflow pingue la base de données toutes les minutes et indique l'état de fonctionnement True si une connexion SQL peut être établie, ou False dans le cas contraire.

Métriques de base de données

Les métriques d'environnement suivantes sont disponibles pour la base de données de métadonnées Airflow utilisée par les environnements Cloud Composer. Vous pouvez utiliser ces métriques pour surveiller les performances et l'utilisation des ressources de l'instance de base de données de votre environnement.

Par exemple, vous pouvez souhaiter augmenter la taille de votre environnement s'il approche des limites de ressources. Vous pouvez également optimiser la taille de votre base de données en effectuant un nettoyage.

Métrique de base de données API Description
Utilisation du processeur de la base de données composer.googleapis.com/environment/database/cpu/usage_time
Cœurs de processeur de base de données composer.googleapis.com/environment/database/cpu/reserved_cores
Utilisation de processeur de la base de données composer.googleapis.com/environment/database/cpu/utilization
Utilisation de mémoire de la base de données composer.googleapis.com/environment/database/memory/bytes_used
Quota de mémoire de la base de données composer.googleapis.com/environment/database/memory/quota
Utilisation de mémoire de la base de données composer.googleapis.com/environment/database/memory/utilization
Utilisation d'espace disque de la base de données composer.googleapis.com/environment/database/disk/bytes_used
Quota d'espace disque de la base de données composer.googleapis.com/environment/database/disk/quota
Utilisation d'espace disque de la base de données composer.googleapis.com/environment/database/disk/utilization
Limite des connexions à la base de données composer.googleapis.com/environment/database/network/max_connections
Connexions de base de données composer.googleapis.com/environment/database/network/connections
Base de données disponible pour le basculement composer.googleapis.com/environment/database/available_for_failover Valeur True si l'instance Cloud SQL de l'environnement est en mode haute disponibilité et est prête pour le basculement.
Nombre de requêtes de basculement automatique de la base de données composer.googleapis.com/environment/database/auto_failover_request_count Nombre total de requêtes de basculement automatique de l'instance Cloud SQL de l'environnement.

Métriques de nœud de calcul

La métrique d'environnement suivante est disponible pour les nœuds de calcul Airflow utilisés par les environnements Cloud Composer 2.

Cette métrique permet de effectuer le scaling automatique du nombre de nœuds de calcul dans votre environnement. L'autoscaler horizontal des pods définit cette métrique, puis le composant d'environnement Airflow Worker Set Controller utilise cette métrique pour augmenter ou diminuer le nombre de nœuds de calcul Airflow, en fonction de la valeur de cette métrique.

Métrique de nœud de calcul API
Cible du facteur d'échelle composer.googleapis.com/environment/worker/scale_factor_target

Métriques du programmeur

Nom API Description
Programmeurs actifs composer.googleapis.com/environment/active_schedulers Nombre d'instances de programmeur actives.

Métriques du déclencheur

Les métriques de déclencheur suivantes sont fournies exclusivement pour Cloud Composer:

Nom API Description
Déclencheurs actifs composer.googleapis.com/environment/active_triggerers Nombre d'instances de déclencheur actives.

De plus, les métriques Airflow suivantes sont disponibles via les métriques Cloud Composer:

Nom API Nom dans Airflow Description
Nombre total de déclencheurs en cours d'exécution composer.googleapis.com/workload/triggerer/num_running_triggers triggers.running Nombre de déclencheurs en cours d'exécution par instance de déclencheur.
Déclencheurs de blocage composer.googleapis.com/environment/trigger/blocking_count triggers.blocked_main_thread Nombre de déclencheurs ayant bloqué le thread principal (probablement en raison d'un problème totalement asynchrone).
Déclencheurs ayant échoué composer.googleapis.com/environment/trigger/failed_count triggers.failed Nombre de déclencheurs ayant échoué avec une erreur avant de pouvoir déclencher un événement.
Déclencheurs réussis composer.googleapis.com/environment/trigger/succeeded_count triggers.succeeded Nombre de déclencheurs ayant déclenché au moins un événement.

Métriques de serveur Web

Les métriques d'environnement suivantes sont disponibles pour le serveur Web Airflow utilisé par les environnements Cloud Composer. Vous pouvez utiliser ces métriques pour vérifier les performances et l'utilisation des ressources de l'instance du serveur Web Airflow dans votre environnement.

Par exemple, vous pouvez vouloir augmenter l'échelle et les paramètres de performances du serveur Web si celui-ci approche constamment des limites de ressources.

Nom API Description
Utilisation du processeur du serveur Web composer.googleapis.com/environment/web_server/cpu/usage_time
Quota de processeurs du serveur Web composer.googleapis.com/environment/web_server/cpu/reserved_cores
Utilisation de la mémoire du serveur Web composer.googleapis.com/environment/web_server/memory/bytes_used
Quota de mémoire du serveur Web composer.googleapis.com/environment/web_server/memory/quota
Serveurs Web actifs composer.googleapis.com/environment/active_webservers Nombre d'instances de serveur Web actives.

Métriques DAG

Les métriques suivantes sont disponibles pour vous aider à surveiller l'efficacité des exécutions de votre DAG et à identifier les tâches qui entraînent une latence élevée.

Métrique DAG API
Nombre d'exécutions du DAG composer.googleapis.com/workflow/run_count
Durée de chaque exécution du DAG composer.googleapis.com/workflow/run_duration
Nombre d'exécutions de tâche composer.googleapis.com/workflow/task/run_count
Durée de chaque exécution de tâche composer.googleapis.com/workflow/task/run_duration

Cloud Monitoring n'affiche que les métriques portant sur les exécutions de workflows et de tâches terminées (succès ou échec). Aucune donnée ne s'affiche lorsqu'il n'existe pas d'activité de workflow, ni quand les exécutions de workflows et de tâches sont en cours.

Métriques de l'exécuteur Celery

Les métriques suivantes de l'exécuteur Celery sont disponibles. Ces métriques peuvent vous aider à déterminer s'il existe suffisamment de ressources de calcul dans votre environnement.

Métrique de l'exécuteur Celery API
Nombre de tâches dans la file d'attente composer.googleapis.com/environment/task_queue_length
Nombre de nœuds de calcul Celery en ligne composer.googleapis.com/environment/num_celery_workers

Métriques Airflow

Les métriques Airflow suivantes sont disponibles. Ces métriques correspondent aux métriques fournies par Airflow.

Nom API Nom dans Airflow Description
Codes de sortie non nuls pour les tâches Celery composer.googleapis.com/environment/celery/execute_command_failure_count celery.execute_command.failure Nombre de codes de sortie non nuls pour les tâches Celery.
Expirations de délai de publication des tâches Celery composer.googleapis.com/environment/celery/task_timeout_error_count celery.task_timeout_error Nombre d'erreurs AirflowTaskTimeout détectées lors de la publication d'une tâche vers l'agent Celery.
Durée d'extraction du DAG sérialisée composer.googleapis.com/environment/collect_db_dag_duration collect_db_dags Temps nécessaire à la récupération de tous les DAG sérialisés dans la base de données.
Erreurs d'actualisation du DAG composer.googleapis.com/environment/dag_callback/exception_count dag.callback_exceptions Nombre d'exceptions générées à partir des rappels DAG. Lorsque cela se produit, cela signifie qu'un rappel DAG ne fonctionne pas.
Erreurs d'actualisation du DAG composer.googleapis.com/environment/dag_file/refresh_error_count dag_file_refresh_error Nombre d'échecs lors du chargement des fichiers DAG.
Temps de chargement du fichier DAG composer.googleapis.com/environment/dag_processing/last_duration dag_processing.last_duration.<dag_file> Temps nécessaire au chargement d'un fichier DAG spécifique.
Temps écoulé depuis le traitement du fichier DAG composer.googleapis.com/environment/dag_processing/last_run_elapsed_time dag_processing.last_run.seconds_ago.<dag_file> Nombre de secondes écoulées depuis le dernier traitement d'un fichier DAG.
Nombre de blocages dans DagFileProcessorManager composer.googleapis.com/environment/dag_processing/manager_stall_count dag_processing.manager_stalls Nombre de processus DagFileProcessorManager bloqués.
Erreurs d'analyse du DAG composer.googleapis.com/environment/dag_processing/parse_error_count dag_processing.import_errors Nombre d'erreurs générées lors de l'analyse des fichiers DAG.
Exécution des processus d'analyse du DAG composer.googleapis.com/environment/dag_processing/processes dag_processing.processes Nombre de processus d'analyse du DAG en cours d'exécution.
Délais d'inactivité du processeur composer.googleapis.com/environment/dag_processing/processor_timeout_count dag_processing.processor_timeouts Nombre de processeurs de fichiers arrêtés en raison de l'opération trop longue.
Temps nécessaire à l'analyse et à l'importation de tous les fichiers DAG composer.googleapis.com/environment/dag_processing/total_parse_time dag_processing.total_parse_time Temps total nécessaire pour analyser et importer tous les fichiers DAG une fois.
Taille actuelle des sacs du DAG composer.googleapis.com/environment/dagbag_size dagbag_size Nombre de DAG trouvés lorsque le programmeur a exécuté une analyse en fonction de sa configuration.
Notifications par e-mail en cas d'échec du SLA lié au contrat de niveau de service composer.googleapis.com/environment/email/sla_notification_failure_count sla_email_notification_failure Nombre de tentatives ayant échoué pour des notifications par e-mail liées au contrat de niveau de service.
Emplacements ouverts sur l'exécuteur composer.googleapis.com/environment/executor/open_slots executor.open_slots Nombre d'emplacements ouverts sur l'exécuteur.
Tâches mises en file d'attente sur l'exécuteur composer.googleapis.com/environment/executor/queued_tasks executor.queued_tasks Nombre de tâches en file d'attente sur l'exécuteur.
Exécuter des tâches sur l'exécuteur composer.googleapis.com/environment/executor/running_tasks executor.running_tasks Nombre de tâches en cours d'exécution sur l'exécuteur.
Réussites/Échecs de l'instance de tâche composer.googleapis.com/environment/finished_task_instance_count ti_failures, ti_successes Succès/échecs globaux de l'instance de tâche.
Jobs démarrés/terminés composer.googleapis.com/environment/job/count <job_name>_start, <job_name>_end Nombre de jobs commencés/terminés, tels que SchedulerJob, LocalTaskJob.
Échecs de pulsation du job composer.googleapis.com/environment/job/heartbeat_failure_count <job_name>_heartbeat_failure Nombre de pulsations ayant échoué pour un job.
Tâches créées par opérateur composer.googleapis.com/environment/operator/created_task_instance_count task_instance_created-<operator_name> Nombre d'instances de tâches créées pour un opérateur donné.
Exécutions d'opérateur composer.googleapis.com/environment/operator/finished_task_instance_count operator_failures_<operator_name>, operator_successes_<operator_name> Nombre d'instances de tâches terminées par opérateur
Emplacements ouverts dans le pool composer.googleapis.com/environment/pool/open_slots pool.open_slots.<pool_name> Nombre d'emplacements libres dans le pool.
Emplacements en file d'attente dans le pool composer.googleapis.com/environment/pool/queued_slots pool.queued_slots.<pool_name> Nombre d'emplacements en file d'attente dans le pool.
Emplacements en cours d'exécution dans le pool composer.googleapis.com/environment/pool/running_slots pool.running_slots.<pool_name> Nombre d'emplacements en cours d'exécution dans le pool.
Affamer les tâches à la piscine composer.googleapis.com/environment/pool/starving_tasks pool.starving_tasks.<pool_name> Nombre de tâches affamées dans la piscine.
Temps passé dans la section critique du planificateur composer.googleapis.com/environment/scheduler/critical_section_duration scheduler.critical_section_duration Temps passé dans la section critique de la boucle du planificateur. Un seul planificateur peut entrer dans cette boucle à la fois.
Échecs critiques de verrouillage de section composer.googleapis.com/environment/scheduler/critical_section_lock_failure_count scheduler.critical_section_busy Nombre de fois où un processus de planificateur a essayé de verrouiller la section critique (nécessaire pour envoyer des tâches à l'exécuteur) et l'a trouvé verrouillé par un autre processus.
Tâches supprimées en externe composer.googleapis.com/environment/scheduler/task/externally_killed_count scheduler.tasks.killed_externally Nombre de tâches supprimées en externe.
Tâches orphelines composer.googleapis.com/environment/scheduler/task/orphan_count scheduler.orphaned_tasks.cleared, scheduler.orphaned_tasks.adopted Nombre de tâches orphelines effacées/adoptées par le planificateur.
Tâches en cours d'exécution/suffisants/exécutables composer.googleapis.com/environment/scheduler/tasks scheduler.tasks.running, scheduler.tasks.starving et scheduler.tasks.executable Nombre de tâches en cours d'exécution, de manque de ressources et exécutables.
Pulsations du programmeur composer.googleapis.com/environment/scheduler_heartbeat_count scheduler_heartbeat Pulsations du programmeur.
Échec des notifications de rappel du contrat de niveau de service composer.googleapis.com/environment/sla_callback_notification_failure_count sla_callback_notification_failure Nombre de tentatives de notification d'échec de notification de rappel de contrat de niveau de service.
Échecs d'exceptions de détection intelligente des capteurs composer.googleapis.com/environment/smart_sensor/exception_failures smart_sensor_operator.exception_failures Nombre d'échecs causés par une exception lors de la précédente boucle de détection de capteurs connectés.
Défaillances de l'infrastructure de détection intelligente du capteur composer.googleapis.com/environment/smart_sensor/infra_failures smart_sensor_operator.infra_failures Nombre de défaillances d'infrastructure dans la précédente boucle de poking des capteurs intelligents.
Exceptions de détection intelligente des capteurs composer.googleapis.com/environment/smart_sensor/poked_exception smart_sensor_operator.poked_exception Nombre d'exceptions dans la précédente boucle de détection des capteurs connectés.
Le capteur intelligent a bien placé les tâches composer.googleapis.com/environment/smart_sensor/poked_success smart_sensor_operator.poked_success Nombre de nouvelles tâches lancées par le capteur connecté dans la boucle de poking précédente.
Tâches de détection intelligentes composer.googleapis.com/environment/smart_sensor/poked_tasks smart_sensor_operator.poked_tasks Nombre de tâches déclenchées par le capteur connecté dans la précédente boucle de poking.
Instances de tâches ayant déjà réussi composer.googleapis.com/environment/task_instance/previously_succeeded_count previously_succeeded Nombre d'instances de tâches ayant déjà abouti.
Tâches zombies tuées composer.googleapis.com/environment/zombie_task_killed_count zombies_killed Nombre de tâches zombies tuées.
Durée d'exécution du DAG composer.googleapis.com/workflow/dag/run_duration dagrun.duration.success.<dag_id>, dagrun.duration.failed.<dag_id> Temps nécessaire pour qu'un DAGRun atteigne l'état de réussite ou d'échec.
Durée de la vérification des dépendances DAG composer.googleapis.com/workflow/dependency_check_duration dagrun.dependency-check.<dag_id> Temps nécessaire pour vérifier les dépendances du DAG. Cette métrique est différente des métriques de vérification des dépendances et des autorisations de l'environnement, et s'applique aux DAG
Retard de la planification d'exécution du DAG composer.googleapis.com/workflow/schedule_delay dagrun.schedule_delay.<dag_id> Délai entre la date de début planifiée de DagRun et la date réelle de début du DAG.
Tâches terminées composer.googleapis.com/workflow/task_instance/finished_count ti.finish.<dag_id>.<task_id>.<state> Nombre de tâches terminées dans un DAG donné.
Durée d'exécution de l'instance de tâche composer.googleapis.com/workflow/task_instance/run_duration dag.<dag_id>.<task_id>.duration Temps nécessaire pour terminer une tâche.
Tâches démarrées composer.googleapis.com/workflow/task_instance/started_count ti.start.<dag_id>.<task_id> Nombre de tâches démarrées dans un DAG donné.
Tâches supprimées du DAG composer.googleapis.com/workflow/task/removed_from_dag_count task_removed_from_dag.<dag_id> Nombre de tâches supprimées pour un DAG donné (autrement dit, la tâche n'existe plus dans le DAG).
Tâches restaurées dans le DAG composer.googleapis.com/workflow/task/restored_to_dag_count task_restored_to_dag.<dag_id> Nombre de tâches restaurées pour un DAG donné (c'est-à-dire, l'instance de tâche qui était précédemment SUPPRIMÉE dans la base de données est ajoutée au fichier DAG).
Retard de planification des tâches composer.googleapis.com/workflow/task/schedule_delay dagrun.schedule_delay.<dag_id> Temps écoulé entre la date de début de la première tâche (start_date) et le début prévu du dagrun.

Utiliser Monitoring pour les environnements Cloud Composer

Console

Vous pouvez utiliser l'Explorateur de métriques pour afficher les métriques liées à vos environnements et DAG:

  • La ressource Environnement Cloud Composer contient des métriques pour les environnements.

    Pour afficher les métriques d'un environnement spécifique, filtrez les métriques par le libellé environment_name. Vous pouvez également filtrer les données en fonction d'autres libellés, tels que l'emplacement de l'environnement ou la version de l'image.

  • La ressource Workflow Cloud Composer contient des métriques pour les DAG.

    Pour afficher les métriques d'un DAG ou d'une tâche spécifique, filtrez les métriques selon les étiquettes workflow_name et task_name. Vous pouvez également filtrer les données en fonction d'autres étiquettes, telles que l'état de la tâche ou le nom de l'opérateur Airflow.

API et gcloud

Vous pouvez créer et gérer des tableaux de bord personnalisés ainsi que les widgets via l'API Cloud Monitoring et la commande gcloud monitoring dashboards. Pour en savoir plus, consultez Gérer les tableaux de bord à l'aide de l'API.

Pour en savoir plus sur les ressources, les métriques et les filtres, consultez la documentation de référence de l'API Cloud Monitoring:

Utiliser les alertes Cloud Monitoring

Vous pouvez créer des règles d'alerte pour surveiller les valeurs des métriques et être informé lorsqu'elles ne respectent pas une condition.

  1. Dans la console Google Cloud, accédez à la page  Alertes:

    Accéder à l'interface des alertes

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Surveillance.

  2. Si vous n'avez pas créé vos canaux de notification et que vous souhaitez être averti, cliquez sur Modifier les canaux de notification et ajoutez vos canaux de notification. Revenez à la page Alertes après avoir ajouté vos canaux.
  3. Sur la page Alertes, cliquez sur Créer une règle.
  4. Pour sélectionner la métrique, développez le menu Sélectionner une métrique, puis procédez comme suit :
    1. Pour limiter le menu aux entrées pertinentes, saisissez Cloud Composer dans la barre de filtre. Si aucun résultat ne s'affiche après avoir filtré le menu, désactivez l'option Afficher seulement les ressources et les métriques actives.
    2. Dans le champ Resource type (Type de ressource), sélectionnez Cloud Composer Environment (Environnement Cloud Composer) ou Cloud Composer Workflow (Workflow Cloud Composer).
    3. Sélectionnez une Catégorie de métrique et une Métrique, puis cliquez sur Appliquer.
  5. Cliquez sur Suivant.
  6. Les paramètres de la page Configurer le déclencheur d'alerte déterminent le moment où l'alerte se déclenche. Sélectionnez un type de condition et, si nécessaire, spécifiez un seuil. Pour plus d'informations, consultez la page Créer des règles d'alerte basées sur un seuil de métrique.
  7. Cliquez sur Suivant.
  8. Facultatif : Pour ajouter des notifications à votre règle d'alerte, cliquez sur Canaux de notification. Dans la boîte de dialogue, sélectionnez un ou plusieurs canaux de notification dans le menu, puis cliquez sur OK.
  9. (Facultatif) Mettez à jour la durée de fermeture automatique de l'incident. Ce champ détermine à quel moment Monitoring ferme les incidents en l'absence de données de métriques.
  10. Facultatif : Cliquez sur Documentation, puis ajoutez les informations à inclure dans le message de notification.
  11. Cliquez sur Nom de l'alerte et saisissez un nom pour la règle d'alerte.
  12. Cliquez sur Créer une stratégie.
Pour en savoir plus, consultez la section Règles d'alerte.

Étapes suivantes