Habilitar Data Jobs Monitoring para Apache Airflow

Data Jobs Monitoring para Apache Airflow está en Vista previa

Para probar la vista previa de la monitorización Airflow, sigue las instrucciones que se indican a continuación.

Data Jobs Monitoring ofrece una visibilidad del rendimiento y la fiabilidad de los flujos de trabajo ejecutados por los DAG de Apache Airflow.

Requisitos

Configuración

Para empezar, sigue las instrucciones que se indican a continuación.

  1. Instala el proveedor openlineage para tanto los programadores como los workers de Airflow añadiendo lo siguiente en tu archivo requirements.txt o dondequiera que se gestionen las dependencias de Airflow:

    Para Airflow 2.7 o posterior:

    apache-airflow-providers-openlineage
    

    Para Airflow 2.5 y 2.6 :

    openlineage-airflow
    
  2. Configura el proveedor openlineage. La opción más sencilla consiste en configurar las siguientes variables de entorno y ponerlas a disposición de los pods en los que ejecutan planificadores y workers de Airflow:

    export OPENLINEAGE_URL=<DD_DATA_OBSERVABILITY_INTAKE>
    export OPENLINEAGE_API_KEY=<DD_API_KEY>
    export AIRFLOW__OPENLINEAGE__NAMESPACE=${AIRFLOW_ENV_NAME}
    
    • Sustituye <DD_DATA_OBSERVABILITY_INTAKE> por https://data-obs-intake..
    • Sustituye <DD_API_KEY> por tu clave de API Datadog válida.
    • Si estás utilizando Airflow v2.7 o v2.8, añade también estas dos variables de entorno junto con las anteriores. Esto soluciona un problema de configuración de OpenLinage solucionado en apache-airflow-providers-openlineage v1.7, mientras que Airflow v2.7 y v2.8 utilizan versiones anteriores.
      #!/bin/sh
      # Required for Airflow v2.7 & v2.8 only
      export AIRFLOW__OPENLINEAGE__CONFIG_PATH=""
      export AIRFLOW__OPENLINEAGE__DISABLED_FOR_OPERATORS=""
      

    Consulta la documentación oficial configuration-openlineage para ver otras configuraciones compatibles del proveedor openlineage.

  3. Activa una actualización de tus pods de Airflow y espera a que finalicen.

Validación

En Datadog, consulta la página Monitorización de trabajos de datos para ver una lista de tus ejecuciones de trabajos de Airflow después de la configuración.

Resolución de problemas

Establece OPENLINEAGE_CLIENT_LOGGING en DEBUG junto con las otras variables de entorno establecidas previamente para el cliente de OpenLineage y sus módulos secundarios. Esto puede ser útil para solucionar problemas durante la configuración del proveedor openlineage.

Requisitos

Configuración

Para empezar, sigue las instrucciones que se indican a continuación.

  1. Instala el proveedor openlineage añadiendo lo siguiente en tu archivo requirements.txt:

    Para Airflow 2.7 o posterior:

    apache-airflow-providers-openlineage
    

    Para Airflow 2.5 y 2.6 :

    openlineage-airflow
    
  2. Configura el proveedor openlineage. La opción más sencilla es definir las siguientes variables de entorno en tu script de inicio de Amazon MWAA:

    #!/bin/sh
    export OPENLINEAGE_URL=<DD_DATA_OBSERVABILITY_INTAKE>
    export OPENLINEAGE_API_KEY=<DD_API_KEY>
    export AIRFLOW__OPENLINEAGE__NAMESPACE=${AIRFLOW_ENV_NAME}
    
    • Sustituye completamente <DD_DATA_OBSERVABILITY_INTAKE> por https://data-obs-intake..
    • Sustituye completamente <DD_API_KEY> por tu clave de API Datadog válida.
    • Si estás utilizando Airflow v2.7 o v2.8, añade también estas dos variables de entorno al script de inicio. Esto soluciona un problema de configuración de OpenLinage solucionado en apache-airflow-providers-openlineage v1.7, mientras que Airflow v2.7 y v2.8 utilizan versiones anteriores.
      #!/bin/sh
      # Required for Airflow v2.7 & v2.8 only
      export AIRFLOW__OPENLINEAGE__CONFIG_PATH=""
      export AIRFLOW__OPENLINEAGE__DISABLED_FOR_OPERATORS=""
      

    Consulta la documentación oficial configuration-openlineage para ver otras configuraciones compatibles del proveedor openlineage.

  3. Despliega tu requirements.txt actualizado y el script de inicio de Amazon MWAA en tu carpeta de Amazon S3 configurada para tu entorno de Amazon MWAA.

  4. Opcionalmente, configura la recopilación de logs para correlacionar los logs de tarea con las ejecuciones de DAG en DJM:

    1. Configura Amazon MWAA para enviar logs a CloudWatch.
    2. Envía los logs a Datadog.

Validación

En Datadog, consulta la página Monitorización de trabajos de datos para ver una lista de tus ejecuciones de trabajos de Airflow después de la configuración.

Resolución de problemas

Asegúrate de que tu rol de ejecución configurado para tu entorno Amazon MWAA tiene los permisos adecuados para requirements.txt y el script de inicio de Amazon MWAA. Esto es necesario si administras tu propio rol de ejecución y es la primera vez que añades esos archivos de respaldo. Si es necesario, consulta la guía oficial de roles de ejecución de Amazon MWAA para ver más detalles.

Establece OPENLINEAGE_CLIENT_LOGGING en DEBUG en el script de inicio de Amazon MWAA para el cliente OpenLineage y sus módulos secundarios. Esto puede ser útil para solucionar problemas durante la configuración del proveedor openlineage.

Para los clientes de Astronomer que utilizan Astro, Astro ofrece funciones de linaje que dependen del proveedor Airflow OpenLineage. Data Jobs Monitoring depende del mismo proveedor OpenLineage y utiliza el transporte Composite para añadir transporte adicional.

Requisitos

Configuración

  1. Para configurar el proveedor de OpenLineage, define las siguientes variables de entorno. Puedes configurar estas variables en tu despliegue de Astronomer utilizando cualquiera de los siguientes métodos:

    OPENLINEAGE__TRANSPORT__TYPE=composite
    OPENLINEAGE__TRANSPORT__TRANSPORTS__DATADOG__TYPE=http
    OPENLINEAGE__TRANSPORT__TRANSPORTS__DATADOG__URL=<DD_DATA_OBSERVABILITY_INTAKE>
    OPENLINEAGE__TRANSPORT__TRANSPORTS__DATADOG__AUTH__TYPE=api_key
    OPENLINEAGE__TRANSPORT__TRANSPORTS__DATADOG__AUTH__API_KEY=<DD_API_KEY>
    OPENLINEAGE__TRANSPORT__TRANSPORTS__DATADOG__COMPRESSION=gzip
    
    • Sustituye <DD_DATA_OBSERVABILITY_INTAKE> por https://data-obs-intake..
    • Sustituye <DD_API_KEY> por tu clave de API Datadog válida.

    Opcional:

    • Define AIRFLOW__OPENLINEAGE__NAMESPACE con un nombre único para tu despliegue de Airflow. Esto permite a Datadog separar lógicamente los trabajos de este despliegue de los de otros despliegues de Airflow.
    • Define OPENLINEAGE_CLIENT_LOGGING en DEBUG para el cliente OpenLineage y sus módulos secundarios para generar logs a un nivel de generación de logs DEBUG. Esto puede ser útil para solucionar problemas durante la configuración del proveedor de OpenLineage.

    Para gestionar las variables de entorno de un despliegue, consulta la guía oficial de Astronomer. Para ver otras configuraciones compatibles del proveedor de OpenLineage, consulta la referencia para la configuración de OpenLineage de Apache Airflow.

  2. Activa una actualización de tu despliegue y espera a que finalice.

Validación

En Datadog, consulta la página Monitorización de trabajos de datos para ver una lista de tus ejecuciones de trabajos de Airflow después de la configuración.

Solucionar problemas

Comprueba que las variables de entorno de OpenLineage están correctamente configuradas en el despliegue de Astronomer.

Nota: Utilizando el archivo .env para agregar las variables entorno no funciona porque las variables sólo se aplican a la local de flujo de aire entorno.

Configuración avanzada

Vincular tus trabajos de Spark con tareas de Airflow

Puedes solucionar de forma más eficiente los problemas de las tareas de Airflow que ejecutan trabajos de Spark conectando la información de ejecución y la telemetría del trabajo de Spark con la tarea de Airflow correspondiente.

Requisitos previos: Actualmente, tus trabajos de Spark se monitorizan a través de Data Jobs Monitoring y se envían a través de SparkSubmitOperator desde tus trabajos de Airflow.

Para ver el vínculo entre la tarea de Airflow y la aplicación de Spark que has enviado, sigue los pasos que se indican a continuación:

  1. Configura Airflow para desactivar la carga perezosa de complementos de Airflow definiendo la configuración lazy_load_plugins como False en tu airflow.cfg o exportando la siguiente variable de entorno donde se ejecutan tus planificadores y workers de Airflow:

    export AIRFLOW__CORE__LAZY_LOAD_PLUGINS='False'
    
  2. Actualiza el archivo DAG de tu trabajo de Airflow añadiendo las siguientes configuraciones Spark a tu SparkSubmitOperator, al que envías tu aplicación Spark:

      SparkSubmitOperator(
        conf={
          "spark.openlineage.parentJobNamespace": "{{ macros.OpenLineageProviderPlugin.lineage_job_namespace() }}",
          "spark.openlineage.parentJobName": "{{ macros.OpenLineageProviderPlugin.lineage_job_name(task_instance) }}",
          "spark.openlineage.parentRunId": "{{ macros.OpenLineageProviderPlugin.lineage_run_id(task_instance) }}",
        },
      )
    

    Para ver definiciones de las macros referenciadas, consulta Macros de trabajo y ejecución de linaje.

  3. Una vez que hayas vuelto a desplegar tu entorno Airflow con la configuración lazy_load_plugins actualizada y el archivo DAG actualizado, y que tu DAG Airflow se haya vuelto a ejecutar, ve a la página Data Jobs Monitoring. A continuación, podrás encontrar tu última ejecución de un trabajo de Airflow y ver un SpanLink en la traza (trace) de ejecución del trabajo de Airflow para la traza de la aplicación Spark lanzada. Esto permite solucionar los problemas de Airflow o Spark en un solo lugar.

Referencias adicionales

PREVIEWING: brett.blue/embedded-collector-release