Solución de problemas del DAG (flujos de trabajo)

En esta página, se proporcionan información y pasos para solucionar problemas comunes en el flujo de trabajo.

Solución de problemas en el flujo de trabajo

Para comenzar con la solución de problemas, siga estos pasos:

  1. Consulta los registros de Airflow.
  2. Revisa el conjunto de operaciones de Google Cloud.
  3. En Cloud Console, busca errores en las páginas de los componentes de Google Cloud que ejecutan tu entorno.
  4. En la interfaz web de Airflow, consulta la Vista de gráfico del DAG para ver las instancias de tareas fallidas.

    Sugerencia: Para navegar por un DAG grande en busca de instancias de tareas fallidas, cambia la orientación de la vista de gráfico de LR a RL. Para ello, anula la configuración predeterminada dag_orientation del servidor web.

Depura fallas del operador

Para depurar una falla del operador, sigue estos pasos:

  1. Verifica si hay errores específicos de la tarea.
  2. Consulta los registros de Airflow.
  3. Revisa el conjunto de operaciones de Google Cloud.
  4. Verifica los registros específicos del operador.
  5. Corrige los errores.
  6. Sube el DAG a la carpeta dags/.
  7. En la interfaz web de Airflow, borra los estados anteriores del DAG.
  8. Reanuda o ejecuta el DAG.

Problemas comunes

En las siguientes secciones, se describen los síntomas y las posibles soluciones para algunos problemas comunes del flujo de trabajo.

La tarea falla sin emitir registros

Los registros están almacenados en búfer. Si un trabajador queda inactivo antes de que se vacíe el búfer, no se emiten registros. La falla de la tarea sin registros indica que los trabajadores de Airflow se reiniciaron debido a la falta de memoria (OOM).

La ejecución del DAG tiene RAM limitada. Cada ejecución de la tarea comienza con dos procesos de Airflow: ejecución de la tarea y supervisión. Actualmente, cada nodo puede realizar hasta 6 tareas simultáneas (aproximadamente 12 procesos cargados con módulos de Airflow). Se puede consumir más memoria, según el tamaño del DAG.

Síntoma

  1. En Cloud Console, ve al panel de cargas de trabajo de GKE.
  2. Si hay pods “airflow-worker” que muestran “Expulsado”, haz clic en cada pod expulsado y busca el mensaje The node was low on resource: memory en la parte superior de la ventana.

Solución

  1. Crea un nuevo entorno de Cloud Composer con un tipo de máquina más grande que el tipo de máquina actual.
  2. Asegúrate de que las tareas del DAG sean idempotentes y se puedan reintentar.
  3. Configura reintentos de tareas.

Tiempo de espera de importación de carga de DAG

Síntoma

  • IU web de Airflow: en la parte superior de la página de la lista de DAG, aparece un cuadro de alerta rojo que muestra Broken DAG: [/path/to/dagfile] Timeout.
  • Conjunto de operaciones de Google Cloud: los registros de airflow-scheduler contienen entradas similares a:
    • “ERROR: Se agotó el tiempo de espera del proceso”
    • “ERROR: No se pudo importar: /path/to/dagfile”
    • “AirflowTaskTimeout: tiempo de espera”

Solución

Anular la configuración de Airflow para core-dagbag_import_timeout y permitir más tiempo para el análisis del DAG.

El DAG provoca una falla en el servidor web de Airflow o hace que muestre un error 502 gateway timeout

Las fallas del servidor web pueden ocurrir por varios motivos. Si ejecutas composer-1.5.2 o una versión posterior, comprueba los registros de airflow-webserver en Cloud Logging para depurar el error 502 gateway timeout.

Procesamiento pesado

Evita ejecutar procesamientos pesados durante el tiempo de análisis del DAG. A diferencia de los nodos de trabajador y programador, cuyos tipos de máquina pueden personalizarse para tener mayor capacidad de CPU y memoria, el servidor web usa un tipo de máquina fijo que puede provocar errores de análisis del DAG si el procesamiento es demasiado pesado.

Ten en cuenta que el servidor web tiene 2 CPU virtuales y 2 GB de memoria. El valor predeterminado para core-dagbag_import_timeout es 30 segundos. Este valor de tiempo de espera define el límite superior de tiempo que Airflow pasa cargando un módulo de Python en la carpeta dags/.

Permisos incorrectos

El servidor web no se ejecuta con la misma cuenta de servicio que los trabajadores y el programador. Por lo tanto, es posible que los trabajadores y el programador puedan acceder a los recursos administrados por el usuario a los que el servidor web no puede acceder.

Te recomendamos que evites acceder a recursos no públicos durante el análisis del DAG. A veces, esto es inevitable y deberás otorgar permisos a la cuenta de servicio del servidor web. El nombre de la cuenta de servicio se deriva del dominio de tu servidor web. Por ejemplo, si el dominio es foo-tp.appspot.com, la cuenta de servicio es foo-tp@appspot.gserviceaccount.com.

Errores del DAG

El servidor web se ejecuta en App Engine y es independiente del clúster de GKE de tu entorno. El servidor web analiza los archivos de definición del DAG, y puede mostrarse un mensaje 502 gateway timeout si hay errores en el DAG. Airflow funciona de forma normal sin un servidor web funcional, si el DAG problemático no interrumpe ningún proceso que se ejecute en GKE. En este caso, puedes usar gcloud composer environments run para recuperar detalles de tu entorno y como una solución si el servidor web deja de estar disponible.

En otros casos, puedes ejecutar el análisis del DAG en GKE y buscar DAG que arrojen excepciones críticas de Python o para los que se haya agotado el tiempo de espera (30 segundos predeterminados). Para solucionar el problema, conéctate a un shell remoto en un contenedor de trabajador de Airflow y prueba los errores de sintaxis. Para obtener más información, consulta Probar DAG.