Monitora gli ambienti con Cloud Monitoring

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Puoi utilizzare Cloud Monitoring e Cloud Logging con Cloud Composer.

Cloud Monitoring offre visibilità su prestazioni, tempo di attività e integrità complessiva delle applicazioni. Cloud Monitoring raccoglie e importa metriche, eventi e metadati da Cloud Composer per generare insight in dashboard e grafici. Puoi utilizzare Cloud Monitoring per comprendere le prestazioni e l'integrità dei tuoi ambienti Cloud Composer e le metriche di Airflow.

Logging acquisisce i log prodotti dallo scheduler e dai container dei worker nel cluster dell'ambiente. Questi log contengono informazioni sulle dipendenze a livello di sistema e di Airflow per aiutare il debug. Per informazioni sulla visualizzazione dei log, consulta Visualizzare i log di Airflow.

Prima di iniziare

  • Per accedere ai log e alle metriche per il tuo ambiente Cloud Composer sono necessarie le seguenti autorizzazioni:

    • Accesso di sola lettura a log e metriche: logging.viewer e monitoring.viewer
    • Accesso di sola lettura ai log, inclusi quelli privati: logging.privateLogViewer
    • Accesso in lettura/scrittura alle metriche: monitoring.editor

    Per ulteriori informazioni su altri ruoli e autorizzazioni per Cloud Composer, vedi Controllo dell'accesso.

  • Per evitare log duplicati, Cloud Logging per Google Kubernetes Engine è disabilitato.

  • Cloud Logging produce una voce per ogni stato e ogni evento che si verificano nel tuo progetto Google Cloud. Puoi utilizzare i filtri di esclusione per ridurre il volume dei log, inclusi quelli prodotti da Cloud Logging per Cloud Composer.

    L'esclusione dei log da jobs.py può causare errori del controllo di integrità e CrashLoopBackOff errori. Devi includere -jobs.py nei filtri di esclusione per evitare che venga escluso.

  • Il monitoraggio non può tracciare i valori del conteggio per i DAG e le attività che vengono eseguite più di una volta al minuto e non traccia le metriche per le attività non riuscite.

Metriche di ambiente

Puoi utilizzare le metriche di ambiente per controllare l'utilizzo e l'integrità delle risorse dei tuoi ambienti Cloud Composer.

Integrità dell'ambiente

Per controllare l'integrità del tuo ambiente, puoi utilizzare la seguente metrica dello stato di integrità: composer.googleapis.com/environment/healthy.

Cloud Composer esegue un DAG di attività denominato airflow_monitoring, che viene eseguito in base a una pianificazione e segnala l'integrità dell'ambiente come segue:

  • Se l'esecuzione del DAG di attività termina correttamente, lo stato di integrità è True.
  • Se l'esecuzione del DAG di attività ha esito negativo, lo stato di integrità è False.

Il DAG di attività è archiviato nella cartella dags/ ed è visibile nella UI di Airflow. La frequenza e i contenuti del DAG di attività sono immutabili e non devono essere modificati. Le modifiche al DAG di attività non vengono mantenute.

Controlli delle dipendenze dell'ambiente

Cloud Composer verifica periodicamente che l'ambiente possa raggiungere i servizi necessari per il funzionamento e che disponga di autorizzazioni sufficienti per l'interazione. Esempi di servizi richiesti per il funzionamento dell'ambiente sono Artifact Registry, Cloud Logging e Cloud Monitoring.

Per i controlli delle dipendenze dell'ambiente sono disponibili le seguenti metriche:

Metrica delle dipendenze API Descrizione
Numero di controlli delle dipendenze composer.googleapis.com/environment/health/dependency_check_count Questa metrica monitora il numero di volte in cui vengono eseguiti i controlli di connettività sui servizi richiesti per il funzionamento dell'ambiente.
Numero di controlli delle autorizzazioni di dipendenza composer.googleapis.com/environment/health/dependency_permissions_check_count Questa metrica monitora il numero di volte in cui vengono eseguiti i controlli delle autorizzazioni sui servizi richiesti per il funzionamento dell'ambiente.

Integrità del database

Per controllare l'integrità del tuo database, puoi utilizzare la seguente metrica dello stato di integrità: composer.googleapis.com/environment/database_health.

Il pod di monitoraggio di Airflow invia un ping al database ogni minuto e segnala lo stato di integrità come True se è possibile stabilire una connessione SQL o False in caso contrario.

Metriche del database

Le seguenti metriche di ambiente sono disponibili per il database di metadati Airflow utilizzato dagli ambienti Cloud Composer. Puoi utilizzare queste metriche per monitorare le prestazioni e l'utilizzo delle risorse dell'istanza del database del tuo ambiente.

Ad esempio, potresti voler eseguire l'upgrade del tipo di macchina Cloud SQL del tuo ambiente se il tuo ambiente si avvicina ai limiti delle risorse. Oppure potresti voler ottimizzare i costi relativi all'utilizzo del database di metadati Airflow eseguendo una pulizia del database, al fine di mantenere lo spazio di archiviazione sotto una determinata soglia.

Metrica di database API Descrizione
Utilizzo CPU database composer.googleapis.com/environment/database/cpu/usage_time
Core della CPU del database composer.googleapis.com/environment/database/cpu/reserved_cores
Utilizzo CPU database composer.googleapis.com/environment/database/cpu/utilization
Utilizzo memoria database composer.googleapis.com/environment/database/memory/bytes_used
Quota di memoria del database composer.googleapis.com/environment/database/memory/quota
Utilizzo memoria database composer.googleapis.com/environment/database/memory/utilization
Utilizzo disco di database composer.googleapis.com/environment/database/disk/bytes_used
Quota disco database composer.googleapis.com/environment/database/disk/quota
Utilizzo disco di database composer.googleapis.com/environment/database/disk/utilization
Limite connessioni database composer.googleapis.com/environment/database/network/max_connections
Connessioni database composer.googleapis.com/environment/database/network/connections
Database disponibile per il failover composer.googleapis.com/environment/database/available_for_failover È True se l'istanza Cloud SQL dell'ambiente è in modalità alta disponibilità ed è pronta per il failover.
Conteggio delle richieste di failover automatico del database composer.googleapis.com/environment/database/auto_failover_request_count Numero totale di richieste di failover automatico dell'istanza Cloud SQL dell'ambiente.

Metriche scheduler

Nome API Descrizione
Scheduler attivi composer.googleapis.com/environment/active_schedulers Numero di istanze dello scheduler attive.

Metriche attivatore

Le seguenti metriche dell'attivatore sono fornite esclusivamente per Cloud Composer:

Nome API Descrizione
Trigger attivi composer.googleapis.com/environment/active_triggerers Il numero di istanze attive dell'attivatore.

Inoltre, le seguenti metriche di Airflow sono disponibili tramite le metriche di Cloud Composer:

Nome API Nome in Airflow Descrizione
Numero totale di trigger in esecuzione composer.googleapis.com/workload/triggerer/num_running_triggers triggers.running Il numero di trigger in esecuzione per istanza triggerer.
Trigger di blocco composer.googleapis.com/environment/trigger/blocking_count triggers.blocked_main_thread Numero di trigger che hanno bloccato il thread principale (probabilmente a causa del mancato funzionamento completamente asincrono).
Trigger non riusciti composer.googleapis.com/environment/trigger/failed_count triggers.failed Numero di trigger non riusciti con un errore prima di poter attivare un evento.
Trigger riusciti composer.googleapis.com/environment/trigger/succeeded_count triggers.succeeded Numero di attivatori che hanno attivato almeno un evento.

Metriche del server web

Le seguenti metriche di ambiente sono disponibili per il server web Airflow utilizzato dagli ambienti Cloud Composer. Puoi utilizzare queste metriche per controllare le prestazioni e l'utilizzo delle risorse dell'istanza del server web Airflow dell'ambiente.

Ad esempio, potresti decidere di eseguire l'upgrade del tipo di macchina server web se si avvicina costantemente ai limiti delle risorse.

Nome API Descrizione
Utilizzo CPU server web composer.googleapis.com/environment/web_server/cpu/usage_time
Quota di CPU per il server web composer.googleapis.com/environment/web_server/cpu/reserved_cores
Utilizzo memoria server web composer.googleapis.com/environment/web_server/memory/bytes_used
Quota di memoria del server web composer.googleapis.com/environment/web_server/memory/quota
Server web attivi composer.googleapis.com/environment/active_webservers Numero di istanze attive del server web.

Metriche DAG

Per aiutarti a monitorare l'efficienza delle esecuzioni dei DAG e identificare le attività che causano un'alta latenza, sono disponibili le seguenti metriche dei DAG.

Metrica DAG API
Numero di esecuzioni di DAG composer.googleapis.com/workflow/run_count
Durata di ogni esecuzione di DAG composer.googleapis.com/workflow/run_duration
Numero di esecuzioni attività composer.googleapis.com/workflow/task/run_count
Durata di ogni esecuzione di attività composer.googleapis.com/workflow/task/run_duration

Cloud Monitoring mostra solo le metriche per le esecuzioni completate del flusso di lavoro e delle attività (riuscita o non riuscita). La dicitura Nessun dato viene visualizzata quando non sono presenti attività del flusso di lavoro e per le esecuzioni di flusso di lavoro e attività in corso.

Metriche Celery Executor

Sono disponibili le seguenti metriche di Celery Executor. Queste metriche possono aiutarti a determinare se sono disponibili risorse worker sufficienti nel tuo ambiente.

Metrica Celery Executor API
Numero di attività in coda composer.googleapis.com/environment/task_queue_length
Numero di worker Celery online composer.googleapis.com/environment/num_celery_workers

Metriche Airflow

Sono disponibili le seguenti metriche di Airflow. Queste metriche corrispondono alle metriche fornite da Airflow.

Nome API Nome in Airflow Descrizione
Codici di uscita di attività Celery diversi da zero composer.googleapis.com/environment/celery/execute_command_failure_count celery.execute_command.failure Numero di codice di uscita diverso da zero delle attività Celery.
Timeout di pubblicazione dell'attività Celery composer.googleapis.com/environment/celery/task_timeout_error_count celery.task_timeout_error Numero di AirflowTaskTimeout errori generati durante la pubblicazione dell'attività nel broker Celery.
Durata del recupero DAG serializzato composer.googleapis.com/environment/collect_db_dag_duration collect_db_dags Tempo impiegato per recuperare tutti i DAG serializzati dal database.
Errori di aggiornamento dei DAG composer.googleapis.com/environment/dag_callback/exception_count dag.callback_exceptions Numero di eccezioni sollevate dai callback DAG. In questo caso, significa che un callback del DAG non funziona.
Errori di aggiornamento dei DAG composer.googleapis.com/environment/dag_file/refresh_error_count dag_file_refresh_error Numero di errori durante il caricamento di file DAG.
Tempo di caricamento del file DAG composer.googleapis.com/environment/dag_processing/last_duration dag_processing.last_duration.<dag_file> Tempo necessario per caricare un file DAG specifico.
Tempo dall'elaborazione del file DAG composer.googleapis.com/environment/dag_processing/last_run_elapsed_time dag_processing.last_run.seconds_ago.<dag_file> Secondi dall'ultima elaborazione di un file DAG.
Conteggio blocchi DagFileProcessorManager composer.googleapis.com/environment/dag_processing/manager_stall_count dag_processing.manager_stalls Numero di processi DagFileProcessorManager bloccati.
Errori di analisi dei DAG composer.googleapis.com/environment/dag_processing/parse_error_count dag_processing.import_errors Numero di errori generati durante l'analisi dei file DAG.
Esecuzione dei processi di analisi dei DAG composer.googleapis.com/environment/dag_processing/processes dag_processing.processes Numero di processi di analisi dei DAG attualmente in esecuzione.
Timeout del processore composer.googleapis.com/environment/dag_processing/processor_timeout_count dag_processing.processor_timeouts Numero di processori di file terminati a causa dell'eccessiva durata dell'elaborazione.
Tempo impiegato per scansionare e importare tutti i file DAG composer.googleapis.com/environment/dag_processing/total_parse_time dag_processing.total_parse_time Tempo totale impiegato per scansionare e importare tutti i file DAG una volta.
Dimensione bag DAG attuale composer.googleapis.com/environment/dagbag_size dagbag_size Numero di DAG trovati quando lo scheduler ha eseguito una scansione in base alla sua configurazione.
Lo SLA (accordo sul livello del servizio) non riuscito non ha ricevuto notifiche email composer.googleapis.com/environment/email/sla_notification_failure_count sla_email_notification_failure Numero di tentativi di notifica via email non riusciti dallo SLA (accordo sul livello del servizio).
Slot aperti sull'esecutore composer.googleapis.com/environment/executor/open_slots executor.open_slots Numero di slot aperti nell'esecutore.
Attività in coda sull'esecutore composer.googleapis.com/environment/executor/queued_tasks executor.queued_tasks Numero di attività in coda nell'esecutore.
Esecuzione di attività sull'esecutore composer.googleapis.com/environment/executor/running_tasks executor.running_tasks Numero di attività in esecuzione sull'esecutore.
Istanze di attività riuscite/non riuscite composer.googleapis.com/environment/finished_task_instance_count ti_failures, ti_successes Riusciti/errori complessivi delle istanze di attività.
Lavori iniziati/finiti composer.googleapis.com/environment/job/count <job_name>_start, <job_name>_end Numero di job avviati/finiti, ad esempio SchedulerJob, LocalTaskJob.
Errori di heartbeat del job composer.googleapis.com/environment/job/heartbeat_failure_count <job_name>_heartbeat_failure Numero di heartbeat non riusciti per un job.
Attività create per operatore composer.googleapis.com/environment/operator/created_task_instance_count task_instance_created-<operator_name> Numero di istanze di attività create per un determinato operatore.
Esecuzioni operatori composer.googleapis.com/environment/operator/finished_task_instance_count operator_failures_<operator_name>, operator_successes_<operator_name> Numero di istanze di attività completate per operatore
Slot aperti nel pool composer.googleapis.com/environment/pool/open_slots pool.open_slots.<pool_name> Numero di slot aperti nel pool.
Slot in coda nel pool composer.googleapis.com/environment/pool/queued_slots pool.queued_slots.<pool_name> Numero di slot in coda nel pool.
Slot in esecuzione nel pool composer.googleapis.com/environment/pool/running_slots pool.running_slots.<pool_name> Numero di slot in esecuzione nel pool.
Attività aggiunte alla fame nel pool composer.googleapis.com/environment/pool/starving_tasks pool.starving_tasks.<pool_name> Numero di attività soggette a fame nel pool.
Tempo trascorso nella sezione critica dello scheduler composer.googleapis.com/environment/scheduler/critical_section_duration scheduler.critical_section_duration Tempo trascorso nella sezione critica del loop dello scheduler. Questo loop può essere inserito da un solo scheduler alla volta.
Errori di blocco delle sezioni critiche composer.googleapis.com/environment/scheduler/critical_section_lock_failure_count scheduler.critical_section_busy Numero di volte in cui un processo dello scheduler ha tentato di ottenere un blocco sulla sezione critica (necessaria per inviare le attività all'esecutore) e lo ha trovato bloccato da un altro processo.
Attività terminate esternamente composer.googleapis.com/environment/scheduler/task/externally_killed_count scheduler.tasks.killed_externally Numero di attività terminate esternamente.
Attività orfane composer.googleapis.com/environment/scheduler/task/orphan_count scheduler.orphaned_tasks.cleared, scheduler.orphaned_tasks.adopted Numero di attività orfane cancellate/adozione dallo scheduler.
Esecuzione, eliminazione speciale dei dati o attività eseguibili composer.googleapis.com/environment/scheduler/tasks scheduler.tasks.running, scheduler.tasks.starving, scheduler.tasks.executable Numero di attività in esecuzione/speciali/eseguibili.
Heartbeat dello scheduler composer.googleapis.com/environment/scheduler_heartbeat_count scheduler_heartbeat Heartbeat dello scheduler.
Notifiche di callback SLA non riuscite composer.googleapis.com/environment/sla_callback_notification_failure_count sla_callback_notification_failure Numero di tentativi di notifica di callback non riusciti dallo SLA (accordo sul livello del servizio).
Errori di rilevamento delle eccezioni del sensore smart composer.googleapis.com/environment/smart_sensor/exception_failures smart_sensor_operator.exception_failures Numero di errori causati da un'eccezione nel precedente ciclo di rilevamento del sensore smart.
Errori dell'infrastruttura dei sensori smart composer.googleapis.com/environment/smart_sensor/infra_failures smart_sensor_operator.infra_failures Numero di guasti dell'infrastruttura nel precedente ciclo di poking dei sensori smart.
Eccezioni alla ricerca di sensori smart composer.googleapis.com/environment/smart_sensor/poked_exception smart_sensor_operator.poked_exception Numero di eccezioni nel precedente loop di picco del sensore smart.
Il sensore smart ha eseguito correttamente le attività composer.googleapis.com/environment/smart_sensor/poked_success smart_sensor_operator.poked_success Numero di attività appena riuscite inserite dal sensore smart nel loop di poking precedente.
Attività individuate con sensori smart composer.googleapis.com/environment/smart_sensor/poked_tasks smart_sensor_operator.poked_tasks Numero di attività eseguite dal sensore smart nel precedente ciclo di poking.
Istanze di attività riuscite in precedenza composer.googleapis.com/environment/task_instance/previously_succeeded_count previously_succeeded Numero di istanze di attività completate in precedenza.
Attività zombie uccisi composer.googleapis.com/environment/zombie_task_killed_count zombies_killed Numero di attività zombie terminate.
Durata esecuzione DAG composer.googleapis.com/workflow/dag/run_duration dagrun.duration.success.<dag_id>, dagrun.duration.failed.<dag_id> Tempo impiegato da un DagRun per raggiungere lo stato riuscito/non riuscito.
Durata del controllo delle dipendenze dei DAG composer.googleapis.com/workflow/dependency_check_duration dagrun.dependency-check.<dag_id> Tempo impiegato per controllare le dipendenze DAG. Questa metrica è diversa dalle metriche dei controlli di dipendenza e autorizzazioni dell'ambiente e si applica ai DAG
Ritardo pianificazione esecuzione DAG composer.googleapis.com/workflow/schedule_delay dagrun.schedule_delay.<dag_id> Tempo di ritardo tra la data di inizio pianificata di DagRun e la data di inizio effettiva di DagRun.
Attività completate composer.googleapis.com/workflow/task_instance/finished_count ti.finish.<dag_id>.<task_id>.<state> Numero di attività completate in un determinato DAG.
Durata di esecuzione dell'istanza dell'attività composer.googleapis.com/workflow/task_instance/run_duration dag.<dag_id>.<task_id>.duration Tempo impiegato per completare un'attività.
Attività avviate composer.googleapis.com/workflow/task_instance/started_count ti.start.<dag_id>.<task_id> Numero di attività avviate in un determinato DAG.
Attività rimosse dal DAG composer.googleapis.com/workflow/task/removed_from_dag_count task_removed_from_dag.<dag_id> Numero di attività rimosse per un determinato DAG (in altre parole, l'attività non esiste più nel DAG).
Attività ripristinate nel DAG composer.googleapis.com/workflow/task/restored_to_dag_count task_restored_to_dag.<dag_id> Il numero di attività ripristinate per un determinato DAG (ovvero, l'istanza dell'attività che in precedenza era in stato RIMOSSO nel database è stata aggiunta al file DAG).
Ritardo nella pianificazione dell'attività composer.googleapis.com/workflow/task/schedule_delay dagrun.schedule_delay.<dag_id> Tempo trascorso tra la data iniziale della prima attività e l'inizio previsto dagrun.

Utilizzo di Monitoring per gli ambienti Cloud Composer

Console

Puoi utilizzare Metrics Explorer per visualizzare le metriche relative ai tuoi ambienti e ai DAG:

  • La risorsa Ambiente Cloud Composer contiene metriche per gli ambienti.

    Per visualizzare le metriche relative a un ambiente specifico, filtra le metriche in base all'etichetta environment_name. Puoi anche filtrare in base ad altre etichette, ad esempio località o versione dell'immagine dell'ambiente.

  • La risorsa Cloud Composer Workflow contiene metriche per i DAG.

    Per visualizzare le metriche per un DAG o un'attività specifici, filtra le metriche in base alle etichette workflow_name e task_name. Puoi anche filtrare in base ad altre etichette, come lo stato dell'attività o il nome dell'operatore Airflow.

API e gcloud

Puoi creare e gestire dashboard personalizzate e widget tramite l'API Cloud Monitoring e il comando gcloud monitoring dashboards. Per maggiori informazioni, consulta Gestire le dashboard in base all'API.

Per ulteriori informazioni su risorse, metriche e filtri, consulta il riferimento per l'API Cloud Monitoring:

Utilizzo degli avvisi di Cloud Monitoring

Puoi creare criteri di avviso per monitorare i valori delle metriche e ricevere una notifica quando queste metriche violano una condizione.

  1. Nella console Google Cloud, vai alla pagina  Avvisi:

    Vai ad Avvisi

    Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.

  2. Se non hai creato i canali di notifica e vuoi ricevere le notifiche, fai clic su Modifica canali di notifica e aggiungi i tuoi canali di notifica. Torna alla pagina Avvisi dopo aver aggiunto i canali.
  3. Nella pagina Avvisi, seleziona Crea criterio.
  4. Per selezionare la metrica, espandi il menu Seleziona una metrica e poi segui questi passaggi:
    1. Per limitare il menu alle voci pertinenti, inserisci Cloud Composer nella barra dei filtri. Se non vengono mostrati risultati dopo aver filtrato il menu, disattiva il pulsante di attivazione/disattivazione Mostra solo risorse e metriche attive.
    2. Per Tipo di risorsa, seleziona Ambiente Cloud Composer o Flusso di lavoro Cloud Composer.
    3. Seleziona una Categoria di metrica e una Metrica, quindi seleziona Applica.
  5. Fai clic su Avanti.
  6. Le impostazioni nella pagina Configura trigger avviso determinano quando l'avviso viene attivato. Seleziona un tipo di condizione e, se necessario, specifica una soglia. Per maggiori informazioni, consulta Creare criteri di avviso con soglia della metrica.
  7. Fai clic su Avanti.
  8. (Facoltativo) Per aggiungere notifiche al criterio di avviso, fai clic su Canali di notifica. Nella finestra di dialogo, seleziona uno o più canali di notifica dal menu, quindi fai clic su Ok.
  9. (Facoltativo) Aggiorna la Durata della chiusura automatica degli incidenti. Questo campo determina quando Monitoring chiude gli incidenti in assenza di dati delle metriche.
  10. (Facoltativo) Fai clic su Documentazione, quindi aggiungi tutte le informazioni che vuoi includere in un messaggio di notifica.
  11. Fai clic su Nome avviso e inserisci un nome per il criterio di avviso.
  12. Fai clic su Crea criterio.
Per saperne di più, consulta Criteri di avviso.

Passaggi successivi