Monitorize ambientes com o Cloud Monitoring

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Pode usar o Cloud Monitoring e o Cloud Logging com o Cloud Composer.

O Cloud Monitoring oferece visibilidade do desempenho, do tempo de atividade e do estado geral das aplicações baseadas na nuvem. O Cloud Monitoring recolhe e carrega métricas, eventos e metadados do Cloud Composer para gerar estatísticas em painéis de controlo e gráficos. Pode usar o Cloud Monitoring para compreender o desempenho e o estado dos seus ambientes do Cloud Composer e métricas do Airflow.

O registo captura registos produzidos pelos contentores do programador e do trabalhador no cluster do seu ambiente. Estes registos contêm informações ao nível do sistema e de dependência do Airflow para ajudar na depuração. Para obter informações sobre como ver registos, consulte o artigo Veja registos do Airflow.

Antes de começar

  • São necessárias as seguintes autorizações para aceder aos registos e às métricas do seu ambiente do Cloud Composer:

    • Acesso só de leitura a registos e métricas: logging.viewer e monitoring.viewer
    • Acesso só de leitura aos registos, incluindo registos privados: logging.privateLogViewer
    • Acesso de leitura/escrita às métricas: monitoring.editor

    Para mais informações sobre outras autorizações e funções para o Cloud Composer, consulte o artigo Controlo de acesso.

  • Para evitar registos duplicados, o Cloud Logging para o Google Kubernetes Engine está desativado.

  • O Cloud Logging produz uma entrada para cada estado e evento que ocorre no seu Google Cloud projeto. Pode usar filtros de exclusão para reduzir o volume de registos, incluindo os registos que o Cloud Logging produz para o Cloud Composer.

Métricas de ambiente

Pode usar métricas de ambiente para verificar a utilização de recursos e o estado dos seus ambientes do Cloud Composer.

Saúde ambiental

Para verificar o estado do seu ambiente, pode usar a seguinte métrica de estado de funcionamento:

Métrica API
Salubridade de um ambiente composer.googleapis.com/environment/healthy

O Cloud Composer executa um DAG de atividade denominado airflow_monitoring, que é executado de acordo com uma programação e comunica o estado do ambiente da seguinte forma:

  • Se a execução do DAG de atividade for concluída com êxito, o estado de funcionamento é True.
  • Se a execução do DAG de atividade falhar, o estado de saúde é False.

O DAG de vivacidade é armazenado na pasta dags/ e visível na IU do Airflow. A frequência e os conteúdos do DAG de vivacidade são imutáveis e não devem ser modificados. As alterações ao DAG de atividade não são persistentes.

Verificações das dependências do ambiente

O Cloud Composer verifica periodicamente se o ambiente consegue alcançar os serviços necessários para o seu funcionamento e se tem autorizações suficientes para interagir com eles. Exemplos de serviços necessários para o funcionamento do ambiente: Artifact Registry, Cloud Logging e Cloud Monitoring.

As seguintes métricas estão disponíveis para as verificações de dependências do ambiente:

Métrica API Descrição
Número de verificações de dependências composer.googleapis.com/environment/health/dependency_check_count Esta métrica acompanha o número de vezes que as verificações de acessibilidade são realizadas em serviços necessários para o funcionamento do ambiente.
Número de verificações de autorizações de dependências composer.googleapis.com/environment/health/dependency_permissions_check_count Esta métrica acompanha o número de vezes que as verificações de autorizações são realizadas em serviços necessários para o funcionamento do ambiente.

Estado da base de dados

Para verificar o estado da sua base de dados, pode usar a seguinte métrica de estado de funcionamento: composer.googleapis.com/environment/database_health.

O pod de monitorização do Airflow envia um sinal ping à base de dados a cada minuto e comunica o estado de funcionamento como True se for possível estabelecer uma ligação SQL ou False caso contrário.

Métricas da base de dados

As seguintes métricas de ambiente estão disponíveis para a base de dados de metadados do Airflow usada pelos ambientes do Cloud Composer. Pode usar estas métricas para monitorizar o desempenho e a utilização de recursos da instância da base de dados do seu ambiente.

Por exemplo, pode querer aumentar o tamanho do seu ambiente se o seu ambiente se aproximar dos limites de recursos. Em alternativa, pode otimizar o tamanho da base de dados fazendo uma limpeza da base de dados.

Métrica da base de dados API Descrição
Utilização da CPU da base de dados composer.googleapis.com/environment/database/cpu/usage_time
Núcleos da CPU da base de dados composer.googleapis.com/environment/database/cpu/reserved_cores
Utilização da CPU da base de dados composer.googleapis.com/environment/database/cpu/utilization
Utilização de memória da base de dados composer.googleapis.com/environment/database/memory/bytes_used
Quota de memória da base de dados composer.googleapis.com/environment/database/memory/quota
Utilização da memória da base de dados composer.googleapis.com/environment/database/memory/utilization
Utilização do disco da base de dados composer.googleapis.com/environment/database/disk/bytes_used
Quota de disco da base de dados composer.googleapis.com/environment/database/disk/quota
Utilização do disco da base de dados composer.googleapis.com/environment/database/disk/utilization
Limite de ligações da base de dados composer.googleapis.com/environment/database/network/max_connections
Ligações da base de dados composer.googleapis.com/environment/database/network/connections
Base de dados disponível para ativação pós-falha composer.googleapis.com/environment/database/available_for_failover É True se a instância do Cloud SQL do ambiente estiver no modo de alta disponibilidade e estiver pronta para a comutação por falha.
Contagem de pedidos de comutação automática por falha da base de dados composer.googleapis.com/environment/database/auto_failover_request_count Número total de pedidos de comutação automática por falha da instância do Cloud SQL do ambiente.

Métricas do trabalhador

As seguintes métricas de ambiente estão disponíveis para trabalhadores do Airflow em ambientes do Cloud Composer 3 e do Cloud Composer 2.

Esta métrica é usada para dimensionar automaticamente o número de trabalhadores no seu ambiente. O Horizontal Pod Autoscaler define esta métrica e, em seguida, o componente de ambiente Airflow Worker Set Controller usa esta métrica para aumentar ou diminuir o número de trabalhadores do Airflow, consoante o valor desta métrica.

Métrica do trabalhador API
Alvo do fator de escalabilidade composer.googleapis.com/environment/worker/scale_factor_target

Métricas do programador

Nome API Descrição
Programadores ativos composer.googleapis.com/environment/active_schedulers Número de instâncias do programador ativas.

Métricas do acionador

Nome API Descrição
Acionadores ativos composer.googleapis.com/environment/active_triggerers O número de instâncias de acionadores ativas.

Métricas do servidor Web

As seguintes métricas de ambiente estão disponíveis para o servidor Web do Airflow usado pelos ambientes do Cloud Composer. Pode usar estas métricas para verificar o desempenho e a utilização de recursos da instância do servidor Web do Airflow do seu ambiente.

Por exemplo, pode querer aumentar a escala e os parâmetros de desempenho do servidor Web se este se aproximar constantemente dos limites de recursos.

Nome API Descrição
Servidores Web ativos composer.googleapis.com/environment/active_webservers Número de instâncias do servidor Web ativas.
Utilização da CPU do servidor Web composer.googleapis.com/environment/web_server/cpu/usage_time
Quota de CPU do servidor Web composer.googleapis.com/environment/web_server/cpu/reserved_cores
Utilização de memória do servidor Web composer.googleapis.com/environment/web_server/memory/bytes_used
Quota de memória do servidor Web composer.googleapis.com/environment/web_server/memory/quota

Quotas para serviços usados pelo ambiente

O Cloud Composer usa outros Google Cloud serviços. Estes serviços têm quotas ao nível do projeto, que se aplicam quando usa o Cloud Composer.

No Cloud Composer 3, o cluster do ambiente está localizado no projeto de inquilino. O Cloud Composer 3 fornece as seguintes métricas que comunicam a utilização de quotas e os limites de quotas correspondentes para os serviços usados pelo seu ambiente no projeto de inquilino.

Métrica API Descrição
Limite de quota da CPU para cargas de trabalho do Cloud Composer composer.googleapis.com/environment/workloads_cpu_quota (Apenas no Cloud Composer 3) A quota de atribuição de CPUs do Compute Engine para o número total de CPUs virtuais usadas por um ambiente. O limite aplica-se por ambiente. Se o seu projeto tiver vários ambientes do Cloud Composer 3, cada ambiente tem o seu próprio limite de quota.
Utilização da quota de CPU para cargas de trabalho do Cloud Composer composer.googleapis.com/environment/workloads_cpu_quota_usage (Apenas Cloud Composer 3) A utilização da quota de alocação de CPU do Compute Engine por um ambiente.

Métricas DAG

Para ajudar a monitorizar a eficiência das execuções de DAGs e identificar tarefas que causam uma elevada latência, estão disponíveis as seguintes métricas de DAGs.

Métrica de DAG API
Número de execuções de DAG composer.googleapis.com/workflow/run_count
Duração de cada execução de DAG composer.googleapis.com/workflow/run_duration
Número de execuções de tarefas composer.googleapis.com/workflow/task/run_count
Duração de cada execução de tarefas composer.googleapis.com/workflow/task/run_duration

O Cloud Monitoring mostra apenas as métricas dos fluxos de trabalho e das execuções de tarefas concluídos (com êxito ou falha). Sem dados é apresentado quando não existe atividade do fluxo de trabalho e para execuções de tarefas e fluxos de trabalho em curso.

Métricas do Celery Executor

Estão disponíveis as seguintes métricas do Celery Executor. Estas métricas podem ajudar a determinar se existem recursos de trabalhadores suficientes no seu ambiente.

Métrica do executor Celery API
Número de tarefas na fila composer.googleapis.com/environment/task_queue_length
Número de trabalhadores do Celery online composer.googleapis.com/environment/num_celery_workers

Métricas do Airflow

Estão disponíveis as seguintes métricas do Airflow. Estas métricas correspondem às métricas fornecidas pelo Airflow.

Nome API Nome no Airflow Descrição
Códigos de saída diferentes de zero da tarefa Celery composer.googleapis.com/environment/celery/execute_command_failure_count celery.execute_command.failure Número de códigos de saída diferentes de zero de tarefas do Celery.
Limites de tempo de publicação de tarefas do Celery composer.googleapis.com/environment/celery/task_timeout_error_count celery.task_timeout_error Número de erros AirflowTaskTimeout gerados ao publicar a tarefa no agente Celery.
Duração da obtenção de DAGs serializados composer.googleapis.com/environment/collect_db_dag_duration collect_db_dags Tempo necessário para obter todos os DAGs serializados da base de dados.
Erros de atualização do DAG composer.googleapis.com/environment/dag_callback/exception_count dag.callback_exceptions Número de exceções geradas a partir de callbacks de DAG. Quando isto acontece, significa que uma chamada de retorno de DAG não está a funcionar.
Erros de atualização do DAG composer.googleapis.com/environment/dag_file/refresh_error_count dag_file_refresh_error Número de falhas ao carregar ficheiros DAG.
Tempo de carregamento do ficheiro DAG composer.googleapis.com/environment/dag_processing/last_duration dag_processing.last_duration.<dag_file> Tempo necessário para carregar um ficheiro DAG específico.
Tempo desde o processamento do ficheiro DAG composer.googleapis.com/environment/dag_processing/last_run_elapsed_time dag_processing.last_run.seconds_ago.<dag_file> Segundos desde o último processamento de um ficheiro DAG.
DagFileProcessorManager stall count composer.googleapis.com/environment/dag_processing/manager_stall_count dag_processing.manager_stalls Número de processos DagFileProcessorManager parados.
Erros de análise DAG composer.googleapis.com/environment/dag_processing/parse_error_count dag_processing.import_errors Número de erros gerados ao analisar ficheiros DAG.
Executar processos de análise DAG composer.googleapis.com/environment/dag_processing/processes dag_processing.processes Número de processos de análise DAG em execução atualmente.
Limites de tempo do processador composer.googleapis.com/environment/dag_processing/processor_timeout_count dag_processing.processor_timeouts O número de processadores de ficheiros que foram terminados porque demoraram demasiado tempo.
Tempo necessário para analisar e importar todos os ficheiros DAG composer.googleapis.com/environment/dag_processing/total_parse_time dag_processing.total_parse_time Tempo total necessário para analisar e importar todos os ficheiros DAG uma vez.
Tamanho atual do saco DAG composer.googleapis.com/environment/dagbag_size dagbag_size Número de DAGs encontrados quando o programador executou uma análise com base na respetiva configuração.
Falha nas notificações por email de incumprimento da SLA composer.googleapis.com/environment/email/sla_notification_failure_count sla_email_notification_failure Número de tentativas de notificação por email de incumprimento do ANS falhadas.
Abrir slots no executor composer.googleapis.com/environment/executor/open_slots executor.open_slots Número de vagas disponíveis no executor.
Tarefas em fila de espera no executor composer.googleapis.com/environment/executor/queued_tasks executor.queued_tasks Número de tarefas em fila de espera no executor.
Executar tarefas no executor composer.googleapis.com/environment/executor/running_tasks executor.running_tasks Número de tarefas em execução no executor.
Êxitos/falhas da instância da tarefa composer.googleapis.com/environment/finished_task_instance_count ti_failures, ti_successes Êxitos/falhas gerais da instância da tarefa.
Tarefas iniciadas/concluídas composer.googleapis.com/environment/job/count <job_name>_start, <job_name>_end Número de tarefas iniciadas/concluídas, como SchedulerJob e LocalTaskJob.
Falhas de heartbeat de tarefas composer.googleapis.com/environment/job/heartbeat_failure_count <job_name>_heartbeat_failure Número de batimentos cardíacos com falhas para uma tarefa.
Tarefas criadas por operador composer.googleapis.com/environment/operator/created_task_instance_count task_instance_created-<operator_name> Número de instâncias de tarefas criadas para um determinado operador.
Execuções de operadores composer.googleapis.com/environment/operator/finished_task_instance_count operator_failures_<operator_name>, operator_successes_<operator_name> Número de instâncias de tarefas concluídas por operador
Abrir vagas no conjunto composer.googleapis.com/environment/pool/open_slots pool.open_slots.<pool_name> Número de vagas disponíveis no grupo.
Espaços em fila na reserva composer.googleapis.com/environment/pool/queued_slots pool.queued_slots.<pool_name> Número de espaços em fila na reserva.
Execução de slots no conjunto composer.googleapis.com/environment/pool/running_slots pool.running_slots.<pool_name> Número de posições em execução no conjunto.
Tarefas com falta de recursos no conjunto composer.googleapis.com/environment/pool/starving_tasks pool.starving_tasks.<pool_name> Número de tarefas com falta de recursos no conjunto.
Tempo gasto na secção crítica do programador composer.googleapis.com/environment/scheduler/critical_section_duration scheduler.critical_section_duration Tempo gasto na secção crítica do ciclo do programador. Apenas um único agendador pode entrar neste ciclo de cada vez.
Falhas críticas de bloqueio de secções composer.googleapis.com/environment/scheduler/critical_section_lock_failure_count scheduler.critical_section_busy A quantidade de vezes que um processo do agendador tentou obter um bloqueio na secção crítica (necessário para enviar tarefas para o executor) e o encontrou bloqueado por outro processo.
Tarefas terminadas externamente composer.googleapis.com/environment/scheduler/task/externally_killed_count scheduler.tasks.killed_externally Número de tarefas terminadas externamente.
Tarefas órfãs composer.googleapis.com/environment/scheduler/task/orphan_count scheduler.orphaned_tasks.cleared, scheduler.orphaned_tasks.adopted Número de tarefas órfãs limpas/adotadas pelo programador.
Tarefas em execução/com falta de recursos/executáveis composer.googleapis.com/environment/scheduler/tasks scheduler.tasks.running, scheduler.tasks.starving, scheduler.tasks.executable Número de tarefas em execução/com falta de recursos/executáveis.
Pulsações do programador composer.googleapis.com/environment/scheduler_heartbeat_count scheduler_heartbeat Sinais de batimento cardíaco do programador.
Notificações de retorno de chamada da SLA com falha composer.googleapis.com/environment/sla_callback_notification_failure_count sla_callback_notification_failure Número de tentativas de notificação de chamada de resposta de violação do ANS falhadas.
Falhas de exceção de cutucadas do sensor inteligente composer.googleapis.com/environment/smart_sensor/exception_failures smart_sensor_operator.exception_failures Número de falhas causadas por exceção no ciclo de sondagem do sensor inteligente anterior.
Falhas de infraestruturas de sondagem de sensores inteligentes composer.googleapis.com/environment/smart_sensor/infra_failures smart_sensor_operator.infra_failures Número de falhas de infraestrutura no ciclo de sondagem do sensor inteligente anterior.
Exceções de sondagem de sensores inteligentes composer.googleapis.com/environment/smart_sensor/poked_exception smart_sensor_operator.poked_exception Número de exceções no ciclo de sondagem do sensor inteligente anterior.
O sensor inteligente enviou tarefas com êxito composer.googleapis.com/environment/smart_sensor/poked_success smart_sensor_operator.poked_success Número de tarefas bem-sucedidas recentemente acionadas pelo sensor inteligente no ciclo de acionamento anterior.
Tarefas de sensores inteligentes composer.googleapis.com/environment/smart_sensor/poked_tasks smart_sensor_operator.poked_tasks Número de tarefas acionadas pelo sensor inteligente no ciclo de acionamento anterior.
Instâncias de tarefas bem-sucedidas anteriormente composer.googleapis.com/environment/task_instance/previously_succeeded_count previously_succeeded Número de instâncias de tarefas com êxito anteriores.
Tarefas de zombies desativadas composer.googleapis.com/environment/zombie_task_killed_count zombies_killed Número de tarefas zombie terminadas.
Duração da execução do DAG composer.googleapis.com/workflow/dag/run_duration dagrun.duration.success.<dag_id>, dagrun.duration.failed.<dag_id> Tempo necessário para um DagRun atingir o estado de êxito/falha.
Duração da verificação de dependência do DAG composer.googleapis.com/workflow/dependency_check_duration dagrun.dependency-check.<dag_id> Tempo necessário para verificar as dependências do DAG. Esta métrica é diferente das métricas de verificação de autorizações e dependências do ambiente e aplica-se a DAGs
Atraso na programação de execução do DAG composer.googleapis.com/workflow/schedule_delay dagrun.schedule_delay.<dag_id> Tempo de atraso entre a data de início agendada do DagRun e a data de início real do DagRun.
Tarefas concluídas composer.googleapis.com/workflow/task_instance/finished_count ti.finish.<dag_id>.<task_id>.<state> Número de tarefas concluídas num determinado DAG.
Duração da execução da instância da tarefa composer.googleapis.com/workflow/task_instance/run_duration dag.<dag_id>.<task_id>.duration Tempo necessário para concluir uma tarefa.
Tarefas iniciadas composer.googleapis.com/workflow/task_instance/started_count ti.start.<dag_id>.<task_id> Número de tarefas iniciadas num determinado DAG.
Duração da instância da tarefa em fila composer.googleapis.com/workflow/task_instance/queued_duration dag.<dag_id>.<task_id>.queued_duration Tempo que uma tarefa passa no estado Em fila antes de mudar para o estado Em execução.
Utilização da CPU da tarefa composer.googleapis.com/workflow/task/cpu_usage task.cpu_usage.<dag_id>.<task_id> Percentagem da CPU usada por uma tarefa.
Utilização de memória da tarefa composer.googleapis.com/workflow/task/mem_usage task.mem_usage.<dag_id>.<task_id> Percentagem de memória utilizada por uma tarefa.
Tarefas removidas do DAG composer.googleapis.com/workflow/task/removed_from_dag_count task_removed_from_dag.<dag_id> Número de tarefas removidas para um determinado DAG (ou seja, a tarefa já não existe no DAG).
Tarefas restauradas para o DAG composer.googleapis.com/workflow/task/restored_to_dag_count task_restored_to_dag.<dag_id> Número de tarefas restauradas para um determinado DAG (ou seja, a instância de tarefa que estava anteriormente no estado REMOVED na base de dados é adicionada ao ficheiro DAG).
Atraso na programação de tarefas composer.googleapis.com/workflow/task/schedule_delay dagrun.schedule_delay.<dag_id> Tempo decorrido entre a data de início da primeira tarefa e o início esperado da execução do DAG.
Número total de acionadores em execução composer.googleapis.com/workload/triggerer/num_running_triggers triggers.running O número de acionadores em execução por instância de acionador.
Acionadores de bloqueio composer.googleapis.com/environment/trigger/blocking_count triggers.blocked_main_thread Número de acionadores que bloquearam o thread principal (provavelmente, porque não eram totalmente assíncronos).
Acionadores falhados composer.googleapis.com/environment/trigger/failed_count triggers.failed O número de acionadores que falharam com um erro antes de poderem acionar um evento.
Acionadores bem-sucedidos composer.googleapis.com/environment/trigger/succeeded_count triggers.succeeded O número de acionadores que dispararam, pelo menos, um evento.

Usar a monitorização para ambientes do Cloud Composer

Consola

Pode usar o Explorador de métricas para apresentar métricas relacionadas com os seus ambientes e DAGs:

  • O recurso Ambiente do Cloud Composer contém métricas para ambientes.

    Para mostrar métricas de um ambiente específico, filtre as métricas pela etiqueta environment_name. Também pode filtrar por outras etiquetas, como a localização do ambiente ou a versão da imagem.

  • O recurso Fluxo de trabalho do Cloud Composer contém métricas para DAGs.

    Para mostrar métricas de um DAG ou de uma tarefa específicos, filtre as métricas pelas etiquetas workflow_name e task_name. Também pode filtrar por outras etiquetas, como o estado da tarefa ou o nome do operador do Airflow.

API e gcloud

Pode criar e gerir painéis de controlo personalizados e os widgets através da API Cloud Monitoring e do comando gcloud monitoring dashboards. Para mais informações, consulte o artigo Faça a gestão dos painéis de controlo por API.

Para mais informações sobre recursos, métricas e filtros, consulte a referência para a API Cloud Monitoring:

Usar alertas do Cloud Monitoring

Pode criar políticas de alerta para monitorizar os valores das métricas e receber uma notificação quando essas métricas violarem uma condição.

  1. Na Google Cloud consola, aceda à página  Alertas:

    Aceder a Alertas

    Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.

  2. Se não tiver criado os canais de notificação e quiser receber notificações, clique em Editar canais de notificação e adicione os seus canais de notificação. Regresse à página Alertas depois de adicionar os seus canais.
  3. Na página Alertas, selecione Criar política.
  4. Para selecionar a métrica, expanda o menu Selecione uma métrica e, em seguida, faça o seguinte:
    1. Para limitar o menu a entradas relevantes, introduza Cloud Composer na barra de filtros. Se não houver resultados depois de filtrar o menu, desative o botão Mostrar apenas recursos e métricas ativos.
    2. Para o Tipo de recurso, selecione Ambiente do Cloud Composer ou Fluxo de trabalho do Cloud Composer.
    3. Selecione uma Categoria de métricas e uma Métrica e, de seguida, selecione Aplicar.
  5. Clicar em Seguinte.
  6. As definições na página Configurar acionador de alerta determinam quando o alerta é acionado. Selecione um tipo de condição e, se necessário, especifique um limite. Para mais informações, consulte Crie políticas de alertas de limite métrico.
  7. Clicar em Seguinte.
  8. Opcional: para adicionar notificações à sua política de alertas, clique em Canais de notificação. Na caixa de diálogo, selecione um ou mais canais de notificação no menu e, de seguida, clique em OK.
  9. Opcional: atualize a Duração do encerramento automático do incidente. Este campo determina quando o Monitoring fecha incidentes na ausência de dados de métricas.
  10. Opcional: clique em Documentação e, de seguida, adicione as informações que quer incluir numa mensagem de notificação.
  11. Clique em Nome do alerta e introduza um nome para a política de alertas.
  12. Clique em Criar política.
Para mais informações, consulte o artigo Vista geral dos alertas.

O que se segue?