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 les tableaux de bord et les graphiques. Vous pouvez utiliser Cloud Monitoring pour comprendre les performances et l'état de vos environnements Cloud Composer et des métriques Airflow.

Logging capture les journaux produits par les conteneurs de programmeur et de nœud de calcul dans le cluster de votre environnement. Ces journaux contiennent des informations sur les dépendances au niveau du système et d'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 pour 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 les journaux produits par Cloud Logging pour Cloud Composer.

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

  • Monitoring ne peut pas tracer les valeurs de décompte pour les DAG et les tâches qui s'exécutent plus d'une fois par minute, et ne trace pas les 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 et l'état des ressources 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 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 d'activité se termine correctement, l'état de fonctionnement est True.
  • Si l'exécution du DAG d'activité échoue, l'état d'intégrité 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 nécessaires à 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 contrôles de joignabilité sont effectués sur les services requis pour le fonctionnement de l'environnement.
Nombre de vérifications des autorisations de dépendance composer.googleapis.com/environment/health/dependency_permissions_check_count Cette métrique indique 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 la métrique d'état 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 mettre à niveau le type de machine Cloud SQL de votre environnement si celui-ci approche de ses limites de ressources. Vous pouvez également optimiser les coûts liés à l'utilisation de la base de données de métadonnées Airflow en effectuant un nettoyage de la base de données afin de maintenir l'espace de stockage sous 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 des connexions de base de données composer.googleapis.com/environment/database/network/max_connections
Connexions aux bases 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 La valeur est True si l'instance Cloud SQL de l'environnement est en mode haute disponibilité et prête pour le basculement.
Nombre de requêtes de basculement automatique de 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 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 parce qu'ils ne sont pas entièrement asynchrones).
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 de serveur Web Airflow de votre environnement.

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 du DAG

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

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élais pour la publication des tâches Celery composer.googleapis.com/environment/celery/task_timeout_error_count celery.task_timeout_error Nombre d'erreurs AirflowTaskTimeout générées lors de la publication d'une tâche sur l'agent Celery.
Durée de la récupération 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 de la base de données.
Erreurs d'actualisation des DAG composer.googleapis.com/environment/dag_callback/exception_count dag.callback_exceptions Nombre d'exceptions générées par les rappels de DAG. Cela signifie qu'un rappel DAG ne fonctionne pas.
Erreurs d'actualisation des 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 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 du DAG composer.googleapis.com/environment/dag_processing/processes dag_processing.processes Nombre de processus d'analyse du DAG en cours d'exécution.
Expirations de délai 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 du délai trop long.
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 seule fois.
Taille actuelle de sac 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 de non-respect du contrat de niveau de service en cas d'échec composer.googleapis.com/environment/email/sla_notification_failure_count sla_email_notification_failure Nombre de tentatives de notification par e-mail manquées dans le cadre du contrat de niveau de service.
Ouvrir les emplacements 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 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 des instances de tâches.
Missions commencées/terminées composer.googleapis.com/environment/job/count <job_name>_start, <job_name>_end Nombre de jobs démarré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âche 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 ouverts 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 dans la piscine composer.googleapis.com/environment/pool/starving_tasks pool.starving_tasks.<pool_name> Nombre de tâches privées de ressources dans le pool.
Temps passé dans la section critique du programmeur 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 du verrouillage de section composer.googleapis.com/environment/scheduler/critical_section_lock_failure_count scheduler.critical_section_busy Nombre de fois où un processus de planification a essayé d'obtenir un verrouillage sur 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, mises en veille ou 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, mises en état de veille ou 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 de non-respect du contrat de niveau de service ayant échoué.
Échecs d'exceptions de détection du capteur intelligent composer.googleapis.com/environment/smart_sensor/exception_failures smart_sensor_operator.exception_failures Nombre d'échecs causés par une exception dans la boucle précédente de repérage du capteur intelligent.
Défaillances de l'infrastructure de détection des 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 poussée du capteur intelligent.
Exceptions de détection du capteur intelligent composer.googleapis.com/environment/smart_sensor/poked_exception smart_sensor_operator.poked_exception Nombre d'exceptions dans la précédente boucle d'insertion du capteur intelligent.
Le capteur intelligent a réussi à envoyer des tâches composer.googleapis.com/environment/smart_sensor/poked_success smart_sensor_operator.poked_success Nombre de tâches nouvellement réussies lancées par le capteur intelligent lors de la précédente boucle de permutation.
Tâches tactiles de capteur intelligent composer.googleapis.com/environment/smart_sensor/poked_tasks smart_sensor_operator.poked_tasks Nombre de tâches lancées par le capteur intelligent lors de la précédente boucle de frappe.
Instances de tâche précédemment réussies composer.googleapis.com/environment/task_instance/previously_succeeded_count previously_succeeded Nombre d'instances de tâche ayant réussi.
Tuer des zombies composer.googleapis.com/environment/zombie_task_killed_count zombies_killed Nombre de tâches de 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/é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 des 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 d'exécution du DAG composer.googleapis.com/workflow/schedule_delay dagrun.schedule_delay.<dag_id> Délai entre la date de début prévue du DagRun et la date de début réelle.
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é (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 que l'instance de tâche qui était auparavant à l'état 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 du DAG.

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 à vos DAG:

  • La ressource Environnement Cloud Composer contient les métriques correspondant aux environnements.

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

  • La ressource de 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 en fonction des libellés workflow_name et task_name. Vous pouvez également filtrer selon 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 widgets et des tableaux de bord personnalisés via l'API Cloud Monitoring et la commande gcloud monitoring dashboards. Pour en savoir plus, consultez la page 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 des 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 le panneau de navigation de la console Google Cloud, sélectionnez Monitoring, puis  Alertes :

    Accéder à l'interface des alertes

  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 Select a metric (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 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 en savoir plus, consultez la page Règles d'alerte.

Étapes suivantes