Monitoraggio degli 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, uptime e integrità complessiva delle applicazioni basate su cloud. Cloud Monitoring raccoglie e importa metriche, eventi e metadati da Cloud Composer per generare approfondimenti in dashboard e grafici. Puoi utilizzare Cloud Monitoring per comprendere le prestazioni e l'integrità dei tuoi ambienti Cloud Composer e delle metriche di Airflow.

Il logging acquisisce i log generati dai container dello scheduler e dei worker nel cluster del tuo ambiente. Questi log contengono informazioni sulle dipendenze a livello di sistema e di Airflow per facilitare il debugging. 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 saperne di più su altri ruoli e autorizzazioni per Cloud Composer, consulta Controllo dell'accesso.

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

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

Metriche dell'ambiente

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

Integrità dell'ambiente

Per controllare lo stato di salute del tuo ambiente, puoi utilizzare la seguente metrica dello stato di salute:

Metrica API
Integrità di un ambiente composer.googleapis.com/environment/healthy

Cloud Composer esegue un DAG di verifica dell'integrità denominato airflow_monitoring, che viene eseguito in base a una pianificazione e segnala lo stato 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à non va a buon fine, lo stato di integrità è False.

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

Controlli delle dipendenze dell'ambiente

Cloud Composer controlla periodicamente che l'ambiente possa raggiungere i servizi necessari per il suo funzionamento e che disponga delle autorizzazioni sufficienti per interagire con essi. Alcuni 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 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 raggiungibilità sui servizi necessari per il funzionamento dell'ambiente.
Numero di controlli delle autorizzazioni delle dipendenze 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 database, puoi utilizzare la seguente metrica dello stato di salute: composer.googleapis.com/environment/database_health.

Il pod di monitoraggio di Airflow esegue un ping al database ogni minuto e segnala lo stato di salute come True se è possibile stabilire una connessione SQL o False se non è possibile.

Metriche del database

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

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

Metrica del 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 della CPU del database composer.googleapis.com/environment/database/cpu/utilization
Utilizzo della memoria del database composer.googleapis.com/environment/database/memory/bytes_used
Quota di memoria del database composer.googleapis.com/environment/database/memory/quota
Utilizzo della memoria del database composer.googleapis.com/environment/database/memory/utilization
Utilizzo del disco del database composer.googleapis.com/environment/database/disk/bytes_used
Quota disco del database composer.googleapis.com/environment/database/disk/quota
Utilizzo del disco del database composer.googleapis.com/environment/database/disk/utilization
Limite di connessioni al database composer.googleapis.com/environment/database/network/max_connections
Connessioni al 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à di 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 dei worker

Le seguenti metriche dell'ambiente sono disponibili per i worker Airflow negli ambienti Cloud Composer 3 e Cloud Composer 2.

Questa metrica viene utilizzata per eseguire la scalabilità automatica del numero di worker nel tuo ambiente. Horizontal Pod Autoscaler imposta questa metrica, che viene poi utilizzata dal componente dell'ambiente Airflow Worker Set Controller per scalare il numero di worker Airflow verso l'alto o verso il basso, a seconda del valore della metrica.

Metrica del worker API
Target del fattore di scala composer.googleapis.com/environment/worker/scale_factor_target

Metriche di Scheduler

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

Metriche degli attivatori

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

Metriche del server web

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

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

Nome API Descrizione
Server web attivi composer.googleapis.com/environment/active_webservers Numero di istanze del server web attive.
Utilizzo CPU server web composer.googleapis.com/environment/web_server/cpu/usage_time
Quota CPU del 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

Metriche DAG

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

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

Cloud Monitoring mostra solo le metriche per le esecuzioni di flussi di lavoro e attività completate (esito positivo o negativo). L'opzione Nessun dato viene visualizzata quando non è presente alcuna attività nel flusso di lavoro e per le esecuzioni di flussi di lavoro e attività in corso.

Metriche dell'esecutore Celery

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

Metrica dell'esecutore Celery 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 Airflow. Queste metriche corrispondono alle metriche fornite da Airflow.

Nome API Nome in Airflow Descrizione
Codici di uscita diversi da zero dell'attività Celery composer.googleapis.com/environment/celery/execute_command_failure_count celery.execute_command.failure Numero di codici di uscita diversi da zero delle attività Celery.
Timeout della pubblicazione delle attività Celery composer.googleapis.com/environment/celery/task_timeout_error_count celery.task_timeout_error Numero di errori AirflowTaskTimeout generati durante la pubblicazione dell'attività nel broker Celery.
Durata del recupero del 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 del DAG composer.googleapis.com/environment/dag_callback/exception_count dag.callback_exceptions Numero di eccezioni sollevate dai callback DAG. In questo caso, significa che una chiamata di callback del DAG non funziona.
Errori di aggiornamento del 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 trascorsi dall'ultima elaborazione di un file DAG.
Conteggio degli arresti anomali di DagFileProcessorManager composer.googleapis.com/environment/dag_processing/manager_stall_count dag_processing.manager_stalls Numero di processi DagFileProcessorManager in stallo.
Errori di analisi del DAG composer.googleapis.com/environment/dag_processing/parse_error_count dag_processing.import_errors Numero di errori generati durante l'analisi dei file DAG.
Processi di analisi DAG in esecuzione composer.googleapis.com/environment/dag_processing/processes dag_processing.processes Numero di processi di analisi DAG attualmente in esecuzione.
Timeout del processore composer.googleapis.com/environment/dag_processing/processor_timeout_count dag_processing.processor_timeouts Numero di elaboratori di file che sono stati interrotti perché richiedevano troppo tempo.
Tempo necessario per eseguire la scansione e importare tutti i file DAG composer.googleapis.com/environment/dag_processing/total_parse_time dag_processing.total_parse_time Tempo totale necessario per eseguire la scansione 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 relativa configurazione.
Notifiche via email per mancato rispetto del contratto di servizio composer.googleapis.com/environment/email/sla_notification_failure_count sla_email_notification_failure Numero di tentativi di invio di notifiche via email per mancato rispetto dello SLA non riusciti.
Slot aperti nell'eseguitore composer.googleapis.com/environment/executor/open_slots executor.open_slots Numero di slot aperti nell'eseguitore.
Attività in coda nell'esecutore composer.googleapis.com/environment/executor/queued_tasks executor.queued_tasks Numero di attività in coda nell'eseguitore.
Attività in esecuzione sull'esecutore composer.googleapis.com/environment/executor/running_tasks executor.running_tasks Numero di attività in esecuzione nell'eseguitore.
Esiti riusciti/non riusciti delle istanze dell'attività composer.googleapis.com/environment/finished_task_instance_count ti_failures, ti_successes Esiti positivi/negativi complessivi delle istanze di attività.
Job avviati/completati composer.googleapis.com/environment/job/count <job_name>_start, <job_name>_end Numero di job avviati/terminati, ad esempio SchedulerJob, LocalTaskJob.
Errori 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 dell'operatore 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à in attesa nel pool composer.googleapis.com/environment/pool/starving_tasks pool.starving_tasks.<pool_name> Numero di attività in attesa nel pool.
Tempo trascorso nella sezione critica dell'organizzatore composer.googleapis.com/environment/scheduler/critical_section_duration scheduler.critical_section_duration Tempo trascorso nella sezione critica del loop dell'organizzatore. Solo un pianificatore alla volta può entrare in questo loop.
Errori di blocco della sezione critica composer.googleapis.com/environment/scheduler/critical_section_lock_failure_count scheduler.critical_section_busy Conteggio del numero di volte in cui un processo di pianificazione ha tentato di acquisire un blocco nella sezione critica (necessario per inviare le attività all'eseguitore) e lo ha trovato bloccato da un altro processo.
Attività interrotte esternamente composer.googleapis.com/environment/scheduler/task/externally_killed_count scheduler.tasks.killed_externally Numero di attività interrotte esternamente.
Attività orfane composer.googleapis.com/environment/scheduler/task/orphan_count scheduler.orphaned_tasks.cleared, scheduler.orphaned_tasks.adopted Numero di attività orfane eliminate/adottate dallo scheduler.
Attività in esecuzione/bloccate/eseguibili composer.googleapis.com/environment/scheduler/tasks scheduler.tasks.running, scheduler.tasks.starving, scheduler.tasks.executable Numero di attività in esecuzione/in attesa/eseguibili.
Heartbeat dello scheduler composer.googleapis.com/environment/scheduler_heartbeat_count scheduler_heartbeat Heartbeat dello scheduler.
Notifiche di chiamata di ritorno per SLA non riuscita composer.googleapis.com/environment/sla_callback_notification_failure_count sla_callback_notification_failure Numero di tentativi di invio di notifiche di mancata risposta allo SLA non riusciti.
Errori di eccezione relativi al poking del sensore intelligente composer.googleapis.com/environment/smart_sensor/exception_failures smart_sensor_operator.exception_failures Numero di errori causati da eccezioni nel loop di poking del sensore intelligente precedente.
Guasti dell'infrastruttura di poking dei sensori smart composer.googleapis.com/environment/smart_sensor/infra_failures smart_sensor_operator.infra_failures Numero di errori di infrastruttura nell'ultimo ciclo di controllo del sensore intelligente.
Esclusioni per il poking del sensore intelligente composer.googleapis.com/environment/smart_sensor/poked_exception smart_sensor_operator.poked_exception Numero di eccezioni nel loop di poking del sensore intelligente precedente.
Attività di push del sensore intelligente completate correttamente composer.googleapis.com/environment/smart_sensor/poked_success smart_sensor_operator.poked_success Numero di attività appena riuscite sottoposte a polling dal sensore intelligente nel ciclo di polling precedente.
Attività di tocco del sensore smart composer.googleapis.com/environment/smart_sensor/poked_tasks smart_sensor_operator.poked_tasks Numero di attività sottoposte a polling dal sensore intelligente nel ciclo di polling precedente.
Istanze di attività riuscite in precedenza composer.googleapis.com/environment/task_instance/previously_succeeded_count previously_succeeded Numero di istanze di attività riuscite in precedenza.
Attività zombie interrotte composer.googleapis.com/environment/zombie_task_killed_count zombies_killed Numero di attività zombie interrotte.
Durata dell'esecuzione del DAG composer.googleapis.com/workflow/dag/run_duration dagrun.duration.success.<dag_id>, dagrun.duration.failed.<dag_id> Tempo necessario a un'esecuzione di DAG per raggiungere lo stato di operazione riuscita o non riuscita.
Durata del controllo delle dipendenze 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 di controllo delle autorizzazioni e delle dipendenze dell'ambiente e si applica ai DAG.
Ritardo nella pianificazione delle esecuzioni del DAG composer.googleapis.com/workflow/schedule_delay dagrun.schedule_delay.<dag_id> Tempo di ritardo tra la data di inizio pianificata della corsa del DAG e la data di inizio effettiva della corsa del DAG.
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 dell'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.
Durata in coda dell'istanza dell'attività composer.googleapis.com/workflow/task_instance/queued_duration dag.<dag_id>.<task_id>.queued_duration Tempo che un'attività trascorre nello stato In coda prima di passare allo stato In esecuzione.
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 (ovvero 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> Numero di attività ripristinate per un determinato DAG (ovvero l'istanza dell'attività che in precedenza era in stato REMOVED nel DB viene aggiunta al file DAG).
Ritardo nella pianificazione delle attività composer.googleapis.com/workflow/task/schedule_delay dagrun.schedule_delay.<dag_id> Tempo trascorso tra la data di inizio della prima attività (start_date) e l'inizio previsto del job DAG.
Numero totale di trigger in esecuzione composer.googleapis.com/workload/triggerer/num_running_triggers triggers.running Il numero di trigger in esecuzione per istanza di attivatore.
Trigger di blocco composer.googleapis.com/environment/trigger/blocking_count triggers.blocked_main_thread Numero di trigger che hanno bloccato il thread principale (probabilmente perché non completamente asincroni).
Trigger non riusciti composer.googleapis.com/environment/trigger/failed_count triggers.failed Numero di attivatori che non sono riusciti a causa di 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.

Utilizzo del monitoraggio per gli ambienti Cloud Composer

Console

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

  • La risorsa Cloud Composer Environment contiene le metriche per gli ambienti.

    Per visualizzare le metriche per un ambiente specifico, filtra le metriche in base all'etichetta environment_name. Puoi anche filtrare in base ad altre etichette, ad esempio la posizione dell'ambiente o la versione dell'immagine.

  • La risorsa Flusso di lavoro Cloud Composer contiene le metriche per i DAG.

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

API e gcloud

Puoi creare e gestire dashboard e widget personalizzati tramite l'API Cloud Monitoring e il comando gcloud monitoring dashboards. Per saperne di più, consulta Gestire le dashboard tramite API.

Per ulteriori informazioni su risorse, metriche e filtri, consulta la documentazione di riferimento dell'API Cloud Monitoring:

Utilizzo degli avvisi di Cloud Monitoring

Puoi creare criteri di avviso per monitorare i valori delle metriche e ricevere notifiche quando queste 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 notifiche, fai clic su Modifica canali di notifica e aggiungi i canali di notifica. Torna alla pagina Avvisi dopo aver aggiunto i tuoi canali.
  3. Nella pagina Avvisi, seleziona Crea criterio.
  4. Per selezionare la metrica, espandi il menu Seleziona una metrica e poi procedi nel seguente modo:
    1. Per limitare il menu alle voci pertinenti, inserisci Cloud Composer nella barra dei filtri. Se non vengono visualizzati risultati dopo aver filtrato il menu, disattiva l'opzione 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 metriche e una Metrica, quindi seleziona Applica.
  5. Fai clic su Avanti.
  6. Le impostazioni nella pagina Configura attivatore di avvisi determinano quando viene attivato l'avviso. Seleziona un tipo di condizione e, se necessario, specifica una soglia. Per ulteriori informazioni, consulta Creare criteri di avviso basati su soglie di metriche.
  7. Fai clic su Avanti.
  8. (Facoltativo) Per aggiungere notifiche al tuo criterio di avviso, fai clic su Canali di notifica. Nella finestra di dialogo, seleziona uno o più canali di notifica dal menu e fai clic su OK.
  9. (Facoltativo) Aggiorna la Durata chiusura automatica incidenti. Questo campo determina quando Monitoring chiude gli incidenti in assenza di dati delle metriche.
  10. (Facoltativo) Fai clic su Documentazione e 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 ulteriori informazioni, consulta Criteri di avviso.

Passaggi successivi