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 à partir de 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 capture les journaux produits par le programmeur et le nœud de calcul conteneurs dans le cluster de votre environnement. Ces journaux contiennent des informations sur les dépendances au niveau du système et d'Airflow qui permettent de faciliter le processus de 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 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 de Cloud Composer, consultez la section 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 filtres d'exclusion pour réduire le volume des journaux, y compris ceux que Cloud Logging produit pour Cloud Composer.

    L'exclusion des journaux de jobs.py peut entraîner des échecs de la vérification de l'état et CrashLoopBackOff erreurs. 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 métrique d'état d'intégrité suivante : composer.googleapis.com/environment/healthy.

Cloud Composer exécute un DAG d'activité nommé airflow_monitoring, qui s'exécute selon un calendrier 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é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 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 suit le nombre de fois où des vérifications de la connectivité sont effectuées 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 permet de suivre le nombre de fois où des vérifications d'autorisation sont effectuées nécessaires au 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 d'intégrité suivante : composer.googleapis.com/environment/database_health.

Le pod de surveillance Airflow envoie un ping à la base de données toutes les minutes et indique l'état état True si une connexion SQL peut être établie ou False si ce n'est pas le cas.

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 augmentez la taille de votre environnement si votre 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 dans la et est prêt 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 pour les ressources Instance Cloud SQL.

Métriques des nœuds 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 d'mettre automatiquement à l'échelle le nombre de nœuds de calcul dans votre environnement. La L'autoscaler horizontal des pods définit cette métrique, puis le composant d'environnement Airflow Worker Set Controller utilise cette pour augmenter ou diminuer le nombre de nœuds de calcul Airflow, en fonction de la 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 planificateur 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 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 augmenter l'échelle et les paramètres de performances 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 de 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 de récupération des DAG sérialisés 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écuter des processus d'analyse de 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 d'un temps de traitement trop long.
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 des sacs 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 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 un 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 des instances de tâche.
Jobs démarrés/terminés composer.googleapis.com/environment/job/count <job_name>_start, <job_name>_end Nombre de tâches démarrées/terminées, telles que SchedulerJob et LocalTaskJob.
Échecs de pulsation du job 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érateurs 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 libres dans le pool composer.googleapis.com/environment/pool/open_slots pool.open_slots.<pool_name> Nombre d'emplacements libres 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.
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 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 arrêté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 planificateur composer.googleapis.com/environment/scheduler_heartbeat_count scheduler_heartbeat Pulsations du planificateur.
Notifications d'échec du rappel du niveau de service composer.googleapis.com/environment/sla_callback_notification_failure_count sla_callback_notification_failure Nombre de tentatives de notification de non-respect du SLA pour un rappel manqué.
É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 pokéage de capteurs intelligents 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 boucle de pokéage de capteur intelligent précédente.
Le capteur intelligent a bien placé les 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 de contact du capteur connecté composer.googleapis.com/environment/smart_sensor/poked_tasks smart_sensor_operator.poked_tasks Nombre de tâches stimulées par le capteur intelligent dans la boucle de stimulation précédente.
Instances de tâche ayant réussi précédemment composer.googleapis.com/environment/task_instance/previously_succeeded_count previously_succeeded Nombre d'instances de tâche ayant déjà réussi.
Tâches zombies tuées composer.googleapis.com/environment/zombie_task_killed_count zombies_killed Nombre de tâches zombies supprimé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 à un DAG Run pour atteindre l'état "Succès" ou "É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
Délai de planification de l'exécution du DAG composer.googleapis.com/workflow/schedule_delay dagrun.schedule_delay.<dag_id> Délai entre la date de début de la tâche DagRun planifiée et la date de début réelle de la tâche DagRun.
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 d'attente de l'instance de tâche composer.googleapis.com/workflow/task_instance/queued_duration dag.<dag_id>.<task_id>.queued_duration Temps passé par une tâche à l'état "Queued" (En file d'attente) avant de passer à l'état "Running" (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é (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 et le début prévu de la tâche 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 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, filtrez les métriques par libellés workflow_name et task_name. Vous pouvez également filtrer les données en fonction d'autres libellés, tels 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 et des widgets personnalisés 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 pour 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 le 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