Surveiller des environnements avec Cloud Monitoring

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

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

Cloud Monitoring offre une visibilité sur les performances, le temps d'activité et l'état général des applications cloud. Cloud Monitoring collecte et ingère des métriques, des événements et des métadonnées depuis Cloud Composer pour générer des insights dans des tableaux de bord et des graphiques. Vous pouvez utiliser Cloud Monitoring pour analyser les performances l'état des 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 vous aider à le débogage. Pour en savoir plus sur l'affichage des journaux, consultez Consultez les journaux Airflow.

Avant de commencer

  • Les autorisations suivantes sont requises pour accéder aux journaux et aux métriques pour 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 pour Pour en savoir plus sur 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 des journaux de jobs.py peut entraîner des échecs de vérification d'état et des erreurs CrashLoopBackOff. Vous devez inclure -jobs.py dans les filtres d'exclusion pour éviter qu'elle ne soit exclue.

  • Monitoring ne peut pas tracer les valeurs de décompte des DAG, 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 vos environnements Cloud Composer.

État de l'environnement

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

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

  • Si l'exécution du DAG de disponibilité se termine correctement, l'état d'intégrité 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érifications 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 d'autorisations suffisantes pour interagir avec eux. Exemples de services requis pour l'environnement sont Artifact Registry, Cloud Logging Cloud Monitoring.

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 de dépendances composer.googleapis.com/environment/health/dependency_check_count Cette métrique permet de suivre le nombre de fois où des contrôles de joignabilité sont effectués sur les services requis pour le 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 suit le nombre de fois où 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 les éléments suivants : Métrique sur l'état de fonctionnement: composer.googleapis.com/environment/database_health.

Le pod de surveillance Airflow pingue la base de données toutes les minutes. Il indique l'état d'intégrité True si une connexion SQL peut être établie ou False si cela n'est pas possible.

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 l'instance de base de données de l'environnement.

Par exemple, vous pouvez mettre à niveau le type de machine Cloud SQL de votre environnement si votre environnement approche de ses limites de ressources. Ou vous voudrez peut-être optimiser liés à l'utilisation de la base de données de métadonnées Airflow database cleanup (nettoyage de base de données) afin de maintenir l'espace de stockage en dessous d'un certain seuil.

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 de connexions à la base de données composer.googleapis.com/environment/database/network/max_connections
Connexions à la 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 prête à basculer.
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 pour les ressources Instance Cloud SQL.

Métriques du programmeur

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

Métriques de 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'environnement Web Airflow dans votre environnement l'instance de serveur.

Par exemple, vous pouvez mettre à niveau le type de machine du serveur Web s'il 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

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

Métrique DAG API
Nombre d'exécutions de 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 pour charger 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 de 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 pour analyser et importer tous les fichiers DAG composer.googleapis.com/environment/dag_processing/total_parse_time dag_processing.total_parse_time Durée totale nécessaire pour analyser et importer tous les fichiers DAG une seule fois.
Taille actuelle du sac du DAG composer.googleapis.com/environment/dagbag_size dagbag_size Nombre de DAG trouvés lorsque le planificateur a exécuté une analyse en fonction de sa configuration.
Notifications par e-mail manquantes en cas de non-respect du délai de disponibilité 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.
Succès/Échecs des instances 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.
Tâches démarrées/terminées 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 de tâche composer.googleapis.com/environment/job/heartbeat_failure_count <job_name>_heartbeat_failure Nombre de battements de cœur ayant échoué pour une tâche.
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 de créneaux disponibles dans le pool.
Emplacements mis 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.
Faim de tâches dans le pool 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 de verrouillage de la section critique composer.googleapis.com/environment/scheduler/critical_section_lock_failure_count scheduler.critical_section_busy Nombre de fois où un processus de planification a tenté d'obtenir un verrouillage de la section critique (nécessaire pour envoyer des tâches à l'exécuteur) et l'a trouvé verrouillée 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, scheduler.tasks.executable Nombre de tâches en cours d'exécution/affamées/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 dans la boucle de pokéage de capteur intelligent précédente.
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 envoyé des requêtes aux tâches composer.googleapis.com/environment/smart_sensor/poked_success smart_sensor_operator.poked_success Nombre de tâches nouvellement réussies stimulées par le capteur intelligent dans la boucle de stimulation précédente.
Tâches déclenchées par le capteur intelligent 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âche ayant déjà réussi.
Tâches zombie supprimé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é.
Durée de la mise en file d'attente de l'instance de tâche composer.googleapis.com/workflow/task_instance/queued_duration dag.<dag_id>.<task_id>.queued_duration Durée pendant laquelle une tâche reste dans l'état "En file d'attente" avant de passer à l'état "En cours d'exécution".
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é (c'est-à-dire que 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).
Délai 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 et le début prévu de la tâche dagrun.

Utiliser Monitoring pour les environnements Cloud Composer

Console

L'Explorateur de métriques vous permet d'afficher liées à vos environnements et DAG:

  • La ressource Cloud Composer Environment (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 Cloud Composer Workflow contient des métriques pour les DAG.

    Pour afficher les métriques d'un DAG ou d'une tâche spécifique, filtrer les métriques Libellés 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 le API Cloud Monitoring et 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. Pour Type de ressource, sélectionnez Environnement Cloud Composer ou 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 plus d'informations, consultez la page Règles d'alerte.

Étape suivante