Risoluzione dei problemi del processore DAG

Managed Airflow (terza generazione) | Managed Airflow (seconda generazione) | Managed Airflow (prima generazione legacy)

Questa pagina si riferisce solo ai problemi relativi all'elaborazione dei file DAG. Per i problemi di pianificazione delle attività, consulta Risoluzione dei problemi dello scheduler Airflow.

Risoluzione dei problemi relativi al flusso di lavoro

Esaminare i log del processore DAG

Se hai DAG complessi, i processori DAG di Airflow potrebbero non analizzare tutti i DAG. Ciò potrebbe causare molti problemi con i seguenti sintomi.

Sintomi:

  • Se un processore DAG riscontra problemi durante l'analisi dei DAG, potrebbe verificarsi una combinazione dei problemi elencati. Se i DAG vengono generati dinamicamente, questi problemi potrebbero avere un impatto maggiore rispetto ai DAG statici.

    • I DAG non sono visibili nell'UI di Airflow e nell'UI DAG.
    • I DAG non sono pianificati per l'esecuzione.
    • Nei log del processore DAG sono presenti errori, ad esempio:
    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.
    

    o

    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.
    
  • Le attività di Airflow pianificate per l'esecuzione vengono annullate e le esecuzioni dei DAG che non sono state analizzate potrebbero essere contrassegnate come failed. Ad esempio:

    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.
    

Soluzione:

  • Aumenta i parametri relativi all'analisi dei DAG:

  • Correggi o rimuovi i DAG che causano problemi ai processori DAG.

Esaminare i tempi di analisi dei DAG

Per verificare se il problema si verifica durante l'analisi dei DAG, segui questi passaggi.

Console

Nella Google Cloud console puoi utilizzare la pagina Monitoraggio e la scheda Log per esaminare i tempi di analisi dei DAG.

Esamina i tempi di analisi dei DAG con la pagina Monitoraggio di Managed Service for Apache Airflow:

  1. Nella Google Cloud console, vai alla pagina Ambienti.

    [Vai agli ambienti][console-list-env]

  2. Nell'elenco degli ambienti, fai clic sul nome dell'ambiente. Si apre la pagina Monitoraggio.

  3. Nella scheda Monitoraggio, seleziona Statistiche DAG ed esamina il grafico Tempo totale di analisi per tutti i file DAG per identificare possibili problemi. Ti consigliamo di monitorare questo grafico per un po' di tempo per identificare i problemi di analisi dei DAG in diversi cicli di analisi dei DAG.

    Il tempo totale di analisi per tutti i file DAG viene visualizzato nella scheda Monitoraggio

Esamina i tempi di analisi dei DAG con la scheda Log di Managed Service for Apache Airflow:

  1. Nella Google Cloud console, vai alla pagina Ambienti.

    [Vai agli ambienti][console-list-env]

  2. Nell'elenco degli ambienti, fai clic sul nome dell'ambiente. Si apre la pagina Monitoraggio.

  3. Vai alla scheda Log e, nell'albero di navigazione Tutti i log , seleziona la sezione Gestore processore DAG.

  4. Esamina i log dag-processor-manager e identifica possibili problemi.

    I log del processore DAG mostreranno i tempi di analisi del DAG

gcloud

Utilizza il comando dags report per visualizzare il tempo di analisi di tutti i DAG.

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

Sostituisci:

  • ENVIRONMENT_NAME con il nome dell'ambiente.
  • LOCATION con la regione in cui si trova l'ambiente.

L'output del comando è simile al seguente:

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

Cerca il valore duration per ciascuno dei DAG elencati nella tabella. Un valore elevato potrebbe indicare che uno dei DAG non è implementato in modo ottimale. Dalla tabella di output puoi identificare i DAG con un tempo di analisi lungo.

Risolvere i problemi durante l'analisi dei DAG

Le sezioni seguenti descrivono i sintomi e le potenziali correzioni per alcuni problemi comuni durante l'analisi dei DAG.

Impostare il processore DAG in modo che ignori i file non necessari

Puoi migliorare le prestazioni del processore DAG di Airflow saltando i file non necessari nella cartella DAG. Il processore DAG di Airflow ignora i file e le cartelle specificati nel file .airflowignore.

Per impostare il processore DAG di Airflow in modo che ignori i file non necessari:

  1. Crea un file .airflowignore.
  2. In questo file, elenca i file e le cartelle da ignorare.
  3. Carica questo file nella cartella /dags del bucket dell'ambiente.

Per saperne di più sul formato del file .airflowignore, consulta la documentazione di Airflow.

Airflow elabora i DAG in pausa

Puoi mettere in pausa i DAG per impedirne l'esecuzione. In questo modo, risparmi le risorse dei worker di Airflow.

I processori DAG di Airflow continuano ad analizzare i DAG in pausa. Se vuoi migliorare le prestazioni dei processori DAG, utilizza .airflowignore o elimina i DAG in pausa dalla cartella DAG.

Problemi comuni

Le sezioni seguenti descrivono i sintomi e le potenziali correzioni per alcuni problemi comuni di analisi.

Timeout di importazione del caricamento DAG

Sintomo:

  • Nell'interfaccia web di Airflow, nella parte superiore della pagina dell'elenco dei DAG, viene visualizzato un riquadro di avviso rosso con il messaggio Broken DAG: [/path/to/dagfile] Timeout.
  • In Cloud Monitoring: i log airflow-scheduler contengono voci simili a:

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

Correzione:

Esegui l'override dell'opzione di configurazione di Airflow dag_file_processor_timeout e concedi più tempo per l'analisi dei DAG:

Sezione Chiave Valore
core dag_file_processor_timeout Nuovo valore di timeout

Un DAG non è visibile nell'UI di Airflow o nell'UI DAG e lo scheduler non lo pianifica

Il processore DAG analizza ogni DAG prima che possa essere pianificato dallo scheduler e prima che un DAG diventi visibile in the Airflow UI or DAG UI.

Le seguenti opzioni di configurazione di Airflow definiscono i timeout per l'analisi dei DAG:

Se un DAG non è visibile nell'UI di Airflow o nell'UI DAG:

  • Controlla i log del processore DAG per verificare se il processore DAG è in grado di elaborare correttamente il DAG. In caso di problemi, potresti visualizzare le seguenti voci di log nei log del processore DAG o dello scheduler:

    [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.
    
  • Controlla i log dello scheduler per verificare se lo scheduler funziona correttamente. In caso di problemi, potresti visualizzare le seguenti voci di log nei log dello scheduler:

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

Soluzioni:

  • Correggi tutti gli errori di analisi dei DAG. Il processore DAG analizza più DAG e, in rari casi, gli errori di analisi di un DAG possono influire negativamente sull'analisi di altri DAG.

  • Se l'analisi del DAG richiede più tempo rispetto al numero di secondi definito in [core]dagbag_import_timeout, aumenta questo timeout.

  • Se l'analisi di tutti i DAG richiede più tempo rispetto al numero di secondi definito in [core]dag_file_processor_timeout, aumenta questo timeout.

  • Se l'analisi del DAG richiede molto tempo, potrebbe anche significare che non è implementato in modo ottimale. Ad esempio, se legge molte variabili di ambiente o esegue chiamate a servizi esterni o al database Airflow. Per quanto possibile, evita di eseguire queste operazioni nelle sezioni globali dei DAG.

  • Aumenta le risorse di CPU e memoria per il processore DAG in modo che possa funzionare più velocemente.

  • Diminuisci la frequenza di analisi dei DAG.

  • Riduci il carico sul database Airflow.

Passaggi successivi