Risoluzione dei problemi relativi al processore DAG

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

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 del workflow

Esame dei log del processore DAG

Se hai DAG complessi, il processore DAG potrebbe non analizzarli tutti. Ciò potrebbe causare molti problemi che presentano i seguenti sintomi.

Sintomi:

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

  • I DAG non sono visibili nelle UI di Airflow e 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.
    
  • I processori DAG riscontrano problemi che portano a riavvii.

  • Le attività di Airflow pianificate per l'esecuzione vengono annullate e le esecuzioni di DAG per i DAG per cui l'analisi non è riuscita 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 DAG:

  • Correggi o rimuovi i DAG che causano problemi al processore DAG.

Esame dei tempi di analisi del DAG

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

Console

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

Esamina i tempi di analisi dei DAG con la pagina Monitoring di Cloud Composer:

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

    [Vai ad Ambienti][console-list-env]

  2. Nell'elenco degli ambienti, fai clic sul nome del tuo ambiente. Viene visualizzata la pagina Monitoraggio.

  3. Nella scheda Monitoraggio, esamina il grafico Tempo totale di analisi per tutti i file DAG nella sezione Esecuzioni DAG e identifica i possibili problemi.

    La sezione Esecuzioni DAG nella scheda Monitoraggio di Composer mostra le metriche di integrità per i DAG nel tuo ambiente

Esamina i tempi di analisi dei DAG nella scheda Log di Cloud Composer:

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

    [Vai ad Ambienti][console-list-env]

  2. Nell'elenco degli ambienti, fai clic sul nome del tuo ambiente. Viene visualizzata la pagina Monitoraggio.

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

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

    I log del processore DAG mostreranno i tempi di analisi DAG

gcloud

Utilizza il comando dags report per visualizzare il tempo di analisi per tutti i tuoi 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:

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

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

Risoluzione dei problemi durante l'analisi dei DAG

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

Numero limitato di thread

Se consenti al gestore del processore DAG di utilizzare solo un numero limitato di thread, il tempo di analisi del DAG potrebbe risentirne.

Per risolvere il problema, esegui l'override delle seguenti opzioni di configurazione di Airflow:

  • Esegui l'override del parametro parsing_processes:

    Sezione Chiave Valore Note
    scheduler parsing_processes NUMBER_OF_CPUs_IN_SCHEDULER - 1 Sostituisci NUMBER_OF_CPUs_IN_SCHEDULER con il numero di CPU
    nello scheduler.

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

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

Per fare in modo che il processore DAG 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 del tuo ambiente.

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

Airflow elabora i DAG in pausa

Gli utenti di Airflow mettono in pausa i DAG per evitarne l'esecuzione. In questo modo, i worker Airflow risparmiano cicli di elaborazione.

Airflow continuerà ad analizzare i DAG in pausa. Se vuoi davvero migliorare le prestazioni del processore DAG, utilizza .airflowignore o elimina i DAG in pausa dalla cartella DAG.

Problemi comuni

Le sezioni seguenti descrivono i sintomi e le potenziali soluzioni 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, un riquadro di avviso rosso mostra 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 DAG:

Sezione Chiave Valore
core dag_file_processor_timeout Nuovo valore di timeout

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

Il processore DAG analizza ogni DAG prima che possa essere programmato dallo scheduler e prima che un DAG diventi visibile nell'interfaccia utente di Airflow o nell'interfaccia utente DAG.

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 DAG:

  • Controlla i log del processore DAG per verificare se è 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 che funzioni correttamente. In caso di problemi, nei log dello scheduler potresti visualizzare le seguenti voci di log:

    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 file 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ù secondi di quelli definiti in [core]dagbag_import_timeout, aumenta questo timeout.

  • Se l'analisi di tutti i DAG richiede più secondi di quelli definiti 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 lo scheduler in modo che possa funzionare più velocemente.

  • Modifica il numero di scheduler.

  • Aumenta il numero di processi del processore DAG in modo che l'analisi possa essere eseguita più rapidamente. Puoi farlo aumentando il valore di [scheduler]parsing_process.

  • Ridurre la frequenza dell'analisi dei DAG.

  • Riduci il carico sul database Airflow.

Passaggi successivi