Monitorar ambientes com o Cloud Monitoring

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

É possível usar o Cloud Monitoring e o Cloud Logging com o Cloud Composer.

O Cloud Monitoring mostra o desempenho, o tempo de atividade e a integridade geral de aplicativos com tecnologia de nuvem. O Cloud Monitoring coleta e ingere métricas, eventos e metadados do Cloud Composer para gerar insights em painéis e gráficos. O Cloud Monitoring pode ser usado para entender o desempenho e integridade dos ambientes do Cloud Composer e métricas do Airflow.

O Logging captura registros produzidos pelo programador e pelo worker no cluster do ambiente. Esses registros contêm informações sobre a dependência do Airflow e o nível do sistema para ajudar depuração. Para informações sobre a visualização de registros, consulte Veja os registros do Airflow.

Antes de começar

  • As seguintes permissões são necessárias para acessar registros e métricas para seu ambiente do Cloud Composer:

    • Acesso somente leitura a registros e métricas: logging.viewer e monitoring.viewer
    • Acesso somente leitura a registros, incluindo registros particulares: logging.privateLogViewer
    • Acesso de leitura/gravação a métricas: monitoring.editor

    Para mais informações sobre outras permissões e funções do Cloud Composer, consulte Controle de acesso.

  • Para evitar a geração de registros duplicada, o Cloud Logging para o Google Kubernetes Engine está desativado.

  • O Cloud Logging gera uma entrada para cada status e evento que ocorre no projeto do Google Cloud. Use filtros de exclusão para reduzir o volume de registros, incluindo os que o Cloud Logging produz para o Cloud Composer.

    A exclusão de registros de jobs.py pode causar falhas na verificação de integridade e erros CrashLoopBackOff. Você precisa incluir -jobs.py nos filtros de exclusão para evitar que ele seja excluído.

  • O monitoramento não registra os valores de contagem dos DAGs e tarefas que são executadas mais de uma vez por minuto e não apresenta métricas para tarefas com falha.

Métricas de ambiente

Você pode usar métricas de ambiente para verificar o uso de recursos e a integridade de nos ambientes do Cloud Composer.

Integridade do ambiente

Para verificar a integridade do ambiente, use a seguinte métrica de status de integridade: composer.googleapis.com/environment/healthy.

O Cloud Composer executa um DAG de atividade chamado airflow_monitoring. que é executado em uma programação e informa a integridade do ambiente da seguinte maneira:

  • Se a execução do DAG de atividade for concluída, o status de integridade será True.
  • Se a execução do DAG de atividade falhar, o status de integridade será False.

O DAG de atividade é armazenado na pasta dags/ e fica visível na interface do Airflow. A frequência e o conteúdo do DAG de atividade são imutáveis e não pode ser modificado. As alterações no DAG de atividade não são mantidas.

Verificações de dependências do ambiente

O Cloud Composer verifica periodicamente se o ambiente consegue alcançar necessários para a operação e que tenha permissões suficientes para interagir com eles. Exemplos de serviços necessários para a infraestrutura 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 de dependência API Descrição
Número de verificações de dependência composer.googleapis.com/environment/health/dependency_check_count Essa métrica rastreia o número de vezes que as verificações de acessibilidade são realizadas em serviços necessários para a operação do ambiente.
Número de verificações de permissões de dependência composer.googleapis.com/environment/health/dependency_permissions_check_count Essa métrica rastreia o número de vezes que as verificações de permissão são realizadas em serviços necessários para a operação do ambiente.

Integridade do banco de dados

Para verificar a integridade do seu banco de dados, você pode usar o seguinte: métrica de status de integridade: composer.googleapis.com/environment/database_health.

O pod de monitoramento do Airflow dá um ping no banco de dados a cada minuto e informa o status de integridade como True se uma conexão SQL puder ser estabelecida ou False se não.

Métricas de banco de dados

As métricas de ambiente a seguir estão disponíveis para o banco de dados de metadados do Airflow usado pelos ambientes do Cloud Composer. Use essas métricas para monitorar o desempenho e o uso de recursos da sua instância de banco de dados do seu ambiente de nuvem.

Por exemplo, talvez seja necessário aumentar o tamanho do ambiente se ele se aproximar dos limites de recursos. Ou talvez você queira otimizar o tamanho do banco de dados fazendo uma limpeza de banco de dados.

Métrica do banco de dados API Descrição
Uso de CPU do banco de dados composer.googleapis.com/environment/database/cpu/usage_time
Núcleos da CPU do banco de dados composer.googleapis.com/environment/database/cpu/reserved_cores
Uso de CPU do banco de dados composer.googleapis.com/environment/database/cpu/utilization
Uso da memória do banco de dados composer.googleapis.com/environment/database/memory/bytes_used
Cota de memória do banco de dados composer.googleapis.com/environment/database/memory/quota
Uso de memória do banco de dados composer.googleapis.com/environment/database/memory/utilization
Uso do disco do banco de dados composer.googleapis.com/environment/database/disk/bytes_used
Cota de disco do banco de dados composer.googleapis.com/environment/database/disk/quota
Uso do disco do banco de dados composer.googleapis.com/environment/database/disk/utilization
Limite de conexões de banco de dados composer.googleapis.com/environment/database/network/max_connections
Conexões de banco de dados composer.googleapis.com/environment/database/network/connections
Banco de dados disponível para failover composer.googleapis.com/environment/database/available_for_failover Será True se a instância do Cloud SQL do ambiente estiver no nível alto e está pronto para o failover.
Contagem de solicitações automáticas de failover do banco de dados composer.googleapis.com/environment/database/auto_failover_request_count Número total de solicitações de failover automático do ambiente instância do Cloud SQL.

Métricas do worker

A métrica de ambiente a seguir está disponível para os workers do Airflow usados pelos ambientes do Cloud Composer 2.

Essa métrica é usada para escalonar automaticamente o número de workers no seu ambiente. O O escalonador automático horizontal de pods define essa métrica e, o componente de ambiente Airflow Worker Set Controller usa esse para aumentar ou diminuir o número de workers do Airflow, dependendo do o valor dessa métrica.

Métrica do worker API
Meta do fator de escalonamento 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 ativas do programador.

Métricas do acionador

As seguintes métricas do acionador são fornecidas exclusivamente para o Cloud Composer:

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

Além disso, as seguintes métricas do Airflow estão disponíveis nas métricas do Cloud Composer:

Nome API Nome no Airflow Descrição
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 acionadores.
Acionadores de bloqueio composer.googleapis.com/environment/trigger/blocking_count triggers.blocked_main_thread Número de gatilhos que bloquearam a linha de execução principal (provavelmente por não ser totalmente assíncrono).
Acionadores com falha composer.googleapis.com/environment/trigger/failed_count triggers.failed Número de acionadores que falharam com um erro antes de disparar um evento.
Acionadores bem-sucedidos composer.googleapis.com/environment/trigger/succeeded_count triggers.succeeded Número de acionadores que dispararam pelo menos um evento.

Métricas do servidor da Web

As métricas de ambiente a seguir estão disponíveis para o servidor da Web do Airflow usado pelos ambientes do Cloud Composer. É possível usar essas métricas para verificar o desempenho e o uso de recursos da instância do servidor da Web do Airflow do ambiente.

Por exemplo, talvez você queira aumentar a escala do servidor da Web e os parâmetros de desempenho se ele se aproxima constantemente dos limites de recursos.

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

Métricas do DAG

Para ajudar você a monitorar a eficiência das execuções de DAG e identificar tarefas que causam alta latência, o DAG a seguir estão disponíveis.

Métrica do DAG API
Número de execuções de DAGs 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 da tarefa composer.googleapis.com/workflow/task/run_count
Duração de cada execução de tarefa composer.googleapis.com/workflow/task/run_duration

O Cloud Monitoring mostra apenas as métricas das execuções de tarefas e fluxos de trabalho concluídas com sucesso ou falha. Nenhum dado é exibido quando o fluxo de trabalho não está em atividade ou quando ele e as tarefas estão em andamento.

Métricas do Executor do Celery

As métricas do Celery Executor a seguir estão disponíveis. Com elas, você determina se há recursos suficientes de worker no ambiente.

Métrica do Celery Executor API
Número de tarefas na fila composer.googleapis.com/environment/task_queue_length
Número de workers on-line do Celery composer.googleapis.com/environment/num_celery_workers

Métricas do Airflow

As seguintes métricas do Airflow estão disponíveis. Essas 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 do 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 das tarefas do Celery.
Tempos limite 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 tarefas no Celery Broker.
Duração da busca do DAG serializada composer.googleapis.com/environment/collect_db_dag_duration collect_db_dags Tempo necessário para buscar todos os DAGs serializados do banco 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 de callbacks de DAG. Quando isso acontece, significa que um callback do DAG não está funcionando.
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 qualquer arquivo DAG.
Tempo de carregamento do arquivo DAG composer.googleapis.com/environment/dag_processing/last_duration dag_processing.last_duration.<dag_file> Tempo gasto para carregar um arquivo DAG específico.
Tempo desde o processamento do arquivo DAG composer.googleapis.com/environment/dag_processing/last_run_elapsed_time dag_processing.last_run.seconds_ago.<dag_file> Segundos desde a última vez que um arquivo DAG foi processado.
Contagem de paradas do DagFileProcessorManager composer.googleapis.com/environment/dag_processing/manager_stall_count dag_processing.manager_stalls Número de processos DagFileProcessorManager parados.
Erros de análise do DAG composer.googleapis.com/environment/dag_processing/parse_error_count dag_processing.import_errors Número de erros gerados ao analisar arquivos DAG.
Como executar processos de análise de DAG composer.googleapis.com/environment/dag_processing/processes dag_processing.processes Número de processos de análise de DAG em execução.
Tempos limite do processador composer.googleapis.com/environment/dag_processing/processor_timeout_count dag_processing.processor_timeouts Número de processadores de arquivos que foram eliminados por demorarem demais.
Tempo necessário para verificar e importar todos os arquivos DAG composer.googleapis.com/environment/dag_processing/total_parse_time dag_processing.total_parse_time Tempo total gasto para verificar e importar todos os arquivos DAG uma vez.
Tamanho atual do pacote do DAG composer.googleapis.com/environment/dagbag_size dagbag_size Número de DAGs encontrados quando o programador executou uma verificação com base na configuração.
Notificações por e-mail de SLAs com falha composer.googleapis.com/environment/email/sla_notification_failure_count sla_email_notification_failure Número de tentativas de notificação por e-mail que falharam no SLA.
Abrir slots no executor composer.googleapis.com/environment/executor/open_slots executor.open_slots Número de slots abertos no executor.
Tarefas na fila do executor composer.googleapis.com/environment/executor/queued_tasks executor.queued_tasks Número de tarefas na fila do executor.
Como executar tarefas no executor composer.googleapis.com/environment/executor/running_tasks executor.running_tasks Número de tarefas em execução no executor.
Sucessos/falhas da instância da tarefa composer.googleapis.com/environment/finished_task_instance_count ti_failures, ti_successes Sucessos/falhas gerais de instâncias de tarefas.
Jobs iniciados/concluídos composer.googleapis.com/environment/job/count <job_name>_start, <job_name>_end Número de jobs iniciados/finalizados, como SchedulerJob e LocalTaskJob.
Falhas no sinal de funcionamento do job composer.googleapis.com/environment/job/heartbeat_failure_count <job_name>_heartbeat_failure Número de batimentos cardíacos com falha para um job.
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 do operador composer.googleapis.com/environment/operator/finished_task_instance_count operator_failures_<operator_name>, operator_successes_<operator_name> Número de instâncias de tarefa concluídas por operador
Slots abertos no pool composer.googleapis.com/environment/pool/open_slots pool.open_slots.<pool_name> Número de slots abertos no pool.
Slots enfileirados no pool composer.googleapis.com/environment/pool/queued_slots pool.queued_slots.<pool_name> Número de slots na fila do pool.
Slots em execução no pool composer.googleapis.com/environment/pool/running_slots pool.running_slots.<pool_name> Número de slots em execução no pool.
Execução de tarefas no pool composer.googleapis.com/environment/pool/starving_tasks pool.starving_tasks.<pool_name> Número de tarefas inativas no pool.
Tempo gasto na seção crítica do programador composer.googleapis.com/environment/scheduler/critical_section_duration scheduler.critical_section_duration Tempo gasto na seção crítica do loop do programador. Apenas um programador pode entrar nesse loop por vez.
Falhas de bloqueio de seção crítica composer.googleapis.com/environment/scheduler/critical_section_lock_failure_count scheduler.critical_section_busy Contagem de vezes que um processo de agendamento tentou obter uma trava na seção crítica (necessária para enviar tarefas ao executor) e a encontrou travada por outro processo.
Tarefas encerradas externamente composer.googleapis.com/environment/scheduler/task/externally_killed_count scheduler.tasks.killed_externally Número de tarefas encerradas externamente.
Tarefas órfãs composer.googleapis.com/environment/scheduler/task/orphan_count scheduler.orphaned_tasks.cleared, scheduler.orphaned_tasks.adopted Número de tarefas isoladas 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/sem recursos/executáveis.
Batimentos do programador composer.googleapis.com/environment/scheduler_heartbeat_count scheduler_heartbeat Batimentos do programador.
Notificações de callback do SLA com falha composer.googleapis.com/environment/sla_callback_notification_failure_count sla_callback_notification_failure Número de tentativas de notificação de callback com falha no SLA.
Falhas de exceção de sondagem de sensores inteligentes composer.googleapis.com/environment/smart_sensor/exception_failures smart_sensor_operator.exception_failures Número de falhas causadas pela exceção no loop de cutucado do sensor inteligente anterior.
Falhas na infraestrutura de sensores inteligentes composer.googleapis.com/environment/smart_sensor/infra_failures smart_sensor_operator.infra_failures Número de falhas de infraestrutura no loop de cutucado do sensor inteligente anterior.
Exceções de sensores inteligentes composer.googleapis.com/environment/smart_sensor/poked_exception smart_sensor_operator.poked_exception Número de exceções no loop de cutucado do sensor inteligente anterior.
O sensor inteligente incitou tarefas com sucesso composer.googleapis.com/environment/smart_sensor/poked_success smart_sensor_operator.poked_success Número de tarefas com sucesso recentemente tocadas pelo sensor inteligente no ciclo de sondagem anterior.
Tarefas de sensores inteligentes composer.googleapis.com/environment/smart_sensor/poked_tasks smart_sensor_operator.poked_tasks Número de tarefas tocadas pelo sensor inteligente no ciclo de toques anterior.
Instâncias de tarefas concluídas anteriormente composer.googleapis.com/environment/task_instance/previously_succeeded_count previously_succeeded Número de instâncias de tarefas bem-sucedidas anteriormente.
Tarefas zumbi eliminadas composer.googleapis.com/environment/zombie_task_killed_count zombies_killed Número de tarefas zumbi eliminadas.
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 que uma execução do DAG leva para chegar ao estado de sucesso/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. Essa métrica é diferente das métricas de dependência e de verificação de permissões do ambiente e se aplica a DAGs.
Atraso da programação da execução do DAG composer.googleapis.com/workflow/schedule_delay dagrun.schedule_delay.<dag_id> Tempo de atraso entre a data de início programada do DagRun e a data de início real.
Tarefas concluídas composer.googleapis.com/workflow/task_instance/finished_count ti.finish.<dag_id>.<task_id>.<state> Número de tarefas concluídas em um 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 em um determinado DAG.
Duração da instância de tarefa na fila composer.googleapis.com/workflow/task_instance/queued_duration dag.<dag_id>.<task_id>.queued_duration Tempo que uma tarefa passa no estado Na fila antes de mudar para o estado Em execução.
Tarefas removidas do DAG composer.googleapis.com/workflow/task/removed_from_dag_count task_removed_from_dag.<dag_id> Número de tarefas removidas de um determinado DAG (ou seja, a tarefa não existe mais 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" no DB é adicionada ao arquivo DAG).
Atraso no agendamento de tarefas composer.googleapis.com/workflow/task/schedule_delay dagrun.schedule_delay.<dag_id> Tempo decorrido entre o start_date da primeira tarefa e o início esperado do dagrun.

Como usar o Monitoring para ambientes do Cloud Composer

Console

Use o Metrics Explorer para mostrar métricas relacionadas aos seus ambientes e DAGs:

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

    Para mostrar as métricas de um ambiente específico, filtrar métricas pelo environment_name. Também é possível filtrar por outros rótulos, como o local 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 tarefa específica, filtrar métricas pelo Rótulos workflow_name e task_name. Também é possível filtrar por outros rótulos, como status da tarefa ou nome do operador do Airflow.

API e gcloud

Você pode criar e gerenciar painéis personalizados e widgets por meio do API Cloud Monitoring e o comando gcloud monitoring dashboards. Para mais informações, consulte Gerenciar painéis por API.

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

Como usar alertas do Cloud Monitoring

É possível criar políticas de alertas para monitorar os valores das métricas e ser notificado quando elas violarem uma condição.

  1. No console do Google Cloud, acesse a página  Alertas:

    Acessar Alertas

    Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.

  2. Se você não tiver criado seus canais de notificação e quiser receber uma notificação, clique em Editar canais de notificação e adicione-os. Volte para a página Alertas depois de adicionar seus canais.
  3. Na página Alertas, clique em Criar política.
  4. Para selecionar a métrica, expanda o menu Selecionar uma métrica e faça isto:
    1. Para limitar o menu a entradas relevantes, insira Cloud Composer na barra de filtro. Se não houver resultados depois de filtrar o menu, desative a opção Mostrar somente recursos e métricas ativos.
    2. Em Tipo de recurso, selecione Ambiente do Cloud Composer ou Fluxo de trabalho do Cloud Composer.
    3. Selecione uma Categoria de métrica e uma Métrica, depois selecione Aplicar.
  5. Clique em Próxima.
  6. As configurações da página Configurar acionador de alertas determinam quando o alerta é acionado. Selecione um tipo de condição e, se necessário, especifique um limite. Para mais informações, consulte Criar políticas de alertas de limite de métrica.
  7. Clique em Próxima.
  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 clique em OK.
  9. Opcional: Atualize a Duração do fechamento automático do incidente. Este campo determina quando o Monitoring fecha incidentes na ausência de dados de métrica.
  10. Opcional: clique em Documentação e adicione as informações que quer incluir em uma mensagem de notificação.
  11. Clique em Nome e digite um nome para a política de alertas.
  12. Clique em Criar política.
Saiba mais em Políticas de alertas.

A seguir