es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

GCP ComposerV2 archivos de registro faltantes

Desplegamos GCP ComposerV2 con la versión más reciente de Airflow. Funciona perfectamente. Pero de vez en cuando, la DAG predefinida “airflow_monitoring” se bloquea.

Aquí están los registros del problema:

*** No se encuentra el archivo de registro: gs://********/logs/airflow_monitoring/echo/2021-12-14T12:36:55+00:00/1.log. Es posible que la tarea no se haya ejecutado o que el trabajador que la ejecutó haya finalizado de forma anormal (por ejemplo, fue expulsado).
*** 404 GET https://storage.googleapis.com/download/storage/v1/b/********/o/logs%2Fairflow_monitoring%2Fecho%2F2021-12-14T12%3A36%3A55%2B00%3A00%2F1.log?alt=media: No existe dicho objeto: ********/logs/airflow_monitoring/echo/2021-12-14T12:36:55+00:00/1.log: (‘Error en la solicitud con el código de estado’, 404, ‘Se esperaba’, <httpstatus.ok: 200=””>, <httpstatus.partial_content: 206=””>)

No cambiamos nada, este problema ha ocurrido aleatoriamente.

Aquí está el código de la DAG predefinida “airflow_monitoring”:

"""Un DAG de monitorización de vitalidad para comprobar si composer.googleapis.com/environment/healthy está activo."""
import airflow
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import timedelta

default_args = {
'start_date': airflow.utils.dates.days_ago(0),
'retries': 1,
'retry_delay': timedelta(minutes=5)
}

dag = DAG(
'airflow_monitoring',
default_args=default_args,
description='DAG de monitorización de vitalidad',
schedule_interval=None,
dagrun_timeout=timedelta(minutes=20))

# priority_weight tiene tipo int en la base de datos de Airflow, utiliza el máximo.
t1 = BashOperator(
task_id='echo',
bash_command='echo test',
dag=dag,
depends_on_past=False,
priority_weight=2**31-1)

</httpstatus.partial_content:></httpstatus.ok:>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Problema con el DAG predefinido “airflow_monitoring” en GCP ComposerV2 con la versión más reciente de Airflow

    Descripción del problema

    El problema ocurre cuando el DAG predefinido “airflow_monitoring” se bloquea de forma aleatoria. Los registros del problema indican que no se encuentra el archivo de registro y es posible que la tarea no se haya ejecutado o que el worker que lo ejecuta haya finalizado de forma anormal (por ejemplo, fue expulsado).

    Se muestra el siguiente mensaje:
    – “No se encuentra el archivo de registro: gs://********/logs/airflow_monitoring/echo/2021-12-14T12:36:55+00:00/1.log”
    – “Es posible que la tarea no se haya ejecutado o que el worker que la ejecuta haya finalizado de forma anormal (por ejemplo, fue expulsado)”
    – “404 GET https://storage.googleapis.com/download/storage/v1/b/********/o/logs%2Fairflow_monitoring%2Fecho%2F2021-12-14T12%3A36%3A55%2B00%3A00%2F1.log?alt=media: No existe dicho objeto: ********/logs/airflow_monitoring/echo/2021-12-14T12:36:55+00:00/1.log: (‘Request failed with status code’, 404, ‘Expected one of’, <httpstatus.ok: 200=””>, <httpstatus.partial_content: 206=””>)”

    Código del DAG predefinido “airflow_monitoring”

    Aquí está el código del DAG predefinido “airflow_monitoring” que se ejecuta en el entorno de GCP ComposerV2:

    """Un DAG de sonda de vida para monitorizar composer.googleapis.com/environment/healthy."""
    
    import airflow
    from airflow import DAG
    from airflow.operators.bash_operator import BashOperator
    from datetime import timedelta
    
    default_args = {
    'start_date': airflow.utils.dates.days_ago(0),
    'retries': 1,
    'retry_delay': timedelta(minutes=5)
    }
    
    dag = DAG(
    'airflow_monitoring',
    default_args=default_args,
    description='dag de monitorización de sonda de vida',
    schedule_interval=None,
    dagrun_timeout=timedelta(minutes=20))
    
    # priority_weight tiene tipo int en la base de datos de Airflow, se utiliza el máximo.
    t1 = BashOperator(
    task_id='echo',
    bash_command='echo test',
    dag=dag,
    depends_on_past=False,
    priority_weight=2**31-1)
    

    Solución

    El problema con el DAG predefinido “airflow_monitoring” en GCP ComposerV2 puede ocurrir debido a diversas razones. Algunas de las soluciones que se pueden implementar son las siguientes:

    • Verificar si el archivo de registro existe en la ubicación especificada.
    • Asegurarse de que el worker encargado de ejecutar la tarea no ha sido expulsado.
    • Aumentar el valor de reintentos (retries) en el default_args.
    • Verificar la configuración de red entre el worker y el bucket de almacenamiento para asegurar que no hay problemas de red.
    • Utilizar un bucket de almacenamiento diferente para guardar los registros.
    • Intentar eliminar la instancia de Composer y crear una nueva.
    • Monitorizar el estado de salud del entorno de Composer utilizando Stackdriver para evitar este tipo de problemas en el futuro.

    Finalmente, se recomienda probar exhaustivamente el DAG antes de implementarlo en el entorno de producción. Esto puede ayudar a prevenir este tipo de problemas.</httpstatus.partial_content:></httpstatus.ok:>

Comments are closed.