Solução de problemas do processador de DAG

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Esta página se refere apenas a problemas relacionados ao processamento de arquivos DAG. Para problemas de programação de tarefas, consulte Solução de problemas do programador do Airflow.

Como resolver problemas do fluxo de trabalho

Como inspecionar registros do processador DAG

Se você tiver DAGs complexos, o processador de DAGs talvez não analise todos eles. Isso pode levar a muitos problemas que têm os seguintes sintomas.

Sintomas:

  • Se o processador de DAGs tiver problemas ao analisar seus DAGs, isso poderá levar a uma combinação dos problemas listados aqui. Se os DAGs forem gerados de forma dinâmica, esses problemas poderão ser mais impactantes em comparação com os DAGs estáticos.

  • Os DAGs não ficam visíveis na interface do Airflow e do DAG.

  • Os DAGs não são programados para execução.

  • Há erros nos registros do processador DAG, por exemplo:

    dag-processor-manager [2023-04-21 21:10:44,510] {manager.py:1144} ERROR -
    Processor for /home/airflow/gcs/dags/dag-example.py with PID 68311 started
    at 2023-04-21T21:09:53.772793+00:00 has timed out, killing it.
    

    ou

    dag-processor-manager [2023-04-26 06:18:34,860] {manager.py:948} ERROR -
    Processor for /home/airflow/gcs/dags/dag-example.py exited with return
    code 1.
    
  • Os processadores de DAG enfrentam problemas que levam a reinicializações.

  • As tarefas do Airflow que estão programadas para execução são canceladas, e as execuções de DAG para DAGs que não foram analisadas podem ser marcadas como failed. Exemplo:

    airflow-scheduler Failed to get task '<TaskInstance: dag-example.task1--1
    manual__2023-04-17T10:02:03.137439+00:00 [removed]>' for dag
    'dag-example'. Marking it as removed.
    

Solução:

  • Aumento de parâmetros relacionados à análise de DAGs:

  • Corrija ou remova DAGs que causem problemas para o processador.

Como inspecionar tempos de análise do DAG

Para verificar se o problema acontece no momento da análise do DAG, siga estas etapas.

Console

No Google Cloud console, você pode usar a página Monitoring e a guia Logs para inspecionar os tempos de análise do DAG.

Inspecione os tempos de análise do DAG com a página de monitoramento do Cloud Composer:

  1. No Google Cloud console, acesse a página Ambientes.

    [Acessar os ambientes][console-list-env]

  2. Na lista de ambientes, clique no nome do seu ambiente. A página Monitoramento é aberta.

  3. Na guia Monitoramento, consulte o gráfico Tempo total de análise de todos os arquivos DAG na seção Execuções do DAG e identifique possíveis problemas.

    A seção de execuções do DAG na guia &quot;Monitoramento do Composer&quot; mostra métricas de integridade dos DAGs no seu ambiente.

Inspecione os tempos de análise do DAG com a guia Registros do Cloud Composer:

  1. No Google Cloud console, acesse a página Ambientes.

    [Acessar os ambientes][console-list-env]

  2. Na lista de ambientes, clique no nome do seu ambiente. A página Monitoramento é aberta.

  3. Acesse a guia Logs e, na árvore de navegação Todos os registros, selecione a seção Gerenciador do processador DAG.

  4. Analise os registros do dag-processor-manager e identifique possíveis problemas.

    Os registros do processador DAG mostram os tempos de análise do DAG.

gcloud

Use o comando dags report para conferir o tempo de análise de todos os seus DAGs.

gcloud composer environments run ENVIRONMENT_NAME \
    --location LOCATION \
    dags report

Substitua:

  • ENVIRONMENT_NAME pelo nome do ambiente
  • LOCATION pela região em que o ambiente está localizado;

A saída do comando será semelhante a esta:

Executing within the following Kubernetes cluster namespace: composer-2-0-31-airflow-2-3-3
file                  | duration       | dag_num | task_num | dags
======================+================+=========+==========+===================
/manydagsbig.py       | 0:00:00.038334 | 2       | 10       | serial-0,serial-0
/airflow_monitoring.py| 0:00:00.001620 | 1       | 1        | airflow_monitoring

Procure o valor de duração para cada um dos DAGs listados na tabela. Um valor grande pode indicar que um dos seus DAGs não está implementado da maneira ideal. Na tabela de saída, é possível identificar quais DAGs têm um longo tempo de análise.

Solução de problemas no momento da análise do DAG

As seções a seguir descrevem sintomas e possíveis correções para alguns problemas comuns no tempo de análise do DAG.

Número limitado de linhas de execução

Permitir que o gerenciador do processador DAG use apenas um número limitado de linhas de execução pode afetar o tempo de análise do DAG.

Para resolver o problema, modifique as seguintes opções de configuração do Airflow:

  • Modifique o parâmetro parsing_processes:

    Seção Chave Valor Observações
    scheduler parsing_processes NUMBER_OF_CPUs_IN_SCHEDULER - 1 Substitua NUMBER_OF_CPUs_IN_SCHEDULER pelo número de CPUs
    no programador.

Fazer com que o processador DAG ignore arquivos desnecessários

Melhore o desempenho do processador de DAG ignorando arquivos desnecessários na pasta de DAGs. O processador de DAG ignora arquivos e pastas especificadas no arquivo .airflowignore.

Para fazer com que o processador de DAG ignore arquivos desnecessários:

  1. Crie um arquivo .airflowignore.
  2. Nesse arquivo, liste as pastas e os arquivos que serão ignorados.
  3. Faça upload desse arquivo na pasta /dags no bucket do seu ambiente.

Para mais informações sobre o formato de arquivo .airflowignore, consulte a documentação do Airflow.

O Airflow processa DAGs pausados

Os usuários do Airflow pausam os DAGs para evitar a execução. Isso economiza ciclos de processamento de workers do Airflow.

O Airflow vai continuar analisando DAGs pausados. Se você realmente quiser melhorar a performance do processador de DAGs, use .airflowignore ou exclua os DAGs pausados da pasta de DAGs.

Problemas comuns

As seções a seguir descrevem sintomas e possíveis correções de alguns problemas comuns de análise.

A importação da carga do DAG atingiu o tempo limite

Sintoma:

  • Na interface da Web do Airflow, na parte de cima da página da lista de DAGs, uma caixa alerta vermelho mostra Broken DAG: [/path/to/dagfile] Timeout.
  • No Cloud Monitoring: os registros airflow-scheduler contêm entradas semelhantes a:

    • ERROR - Process timed out
    • ERROR - Failed to import: /path/to/dagfile
    • AirflowTaskTimeout: Timeout

Corrigir:

Modifique a opção de configuração do Airflow dag_file_processor_timeout e conceda mais tempo para a análise do DAG:

Seção Chave Valor
core dag_file_processor_timeout Novo valor de tempo limite

Um DAG não fica visível na interface do Airflow ou do DAG, e o programador não o agenda.

O processador DAG analisa cada DAG antes de ser programado pelo programador e antes que um DAG se torne visível na interface do Airflow ou na interface do DAG.

As seguintes opções de configuração do Airflow definem os tempos limite para a análise de DAGs:

Se um DAG não estiver visível na interface do Airflow ou do DAG:

  • Verifique se o processador de DAG consegue processar corretamente seu DAG nos registros do processador de DAG. Em caso de problemas, talvez você veja as seguintes entradas de registro nos registros do processador DAG ou do agendador:

    [2020-12-03 03:06:45,672] {dag_processing.py:1334} ERROR - Processor for
    /usr/local/airflow/dags/example_dag.py with PID 21903 started at
    2020-12-03T03:05:55.442709+00:00 has timed out, killing it.
    
  • Verifique os registros do programador para saber se ele funciona corretamente. Em caso de problemas, você poderá ver as seguintes entradas de registro nos registros do agendador:

    DagFileProcessorManager (PID=732) last sent a heartbeat 240.09 seconds ago! Restarting it
    Process timed out, PID: 68496
    

Soluções:

  • Corrija todos os erros de análise de DAG. O processador de DAG analisa vários DAGs e, em casos raros, os erros de análise de um DAG podem afetar negativamente a análise de outros DAGs.

  • Se a análise do DAG levar mais do que o número de segundos definido em [core]dagbag_import_timeout, aumente esse tempo limite.

  • Se a análise de todos os DAGs levar mais do que a quantidade de segundos definida em [core]dag_file_processor_timeout, aumente esse tempo limite.

  • Se o DAG levar muito tempo para ser analisado, isso também pode significar que ele não está implementado da maneira ideal. Por exemplo, se ele ler muitas variáveis de ambiente ou realizar chamadas para serviços externos ou para o banco de dados do Airflow. Na medida do possível, evite realizar essas operações em seções globais de DAGs.

  • Aumente os recursos de CPU e memória do Programador para que ele funcione mais rápido.

  • Ajuste o número de programadores.

  • Aumente o número de processos do processador DAG para que a análise possa ser feita mais rapidamente. Para fazer isso, aumente o valor de [scheduler]parsing_process.

  • Diminuir a frequência da análise de DAG.

  • Reduza a carga no banco de dados do Airflow.

A seguir