monitor los datos de Apache Airflow configurando OpenTelemetry para enviar datos a New Relic, donde puede visualizar tareas, operadores y ejecuciones de DAG como métrica.
Requisitos previos
Antes de habilitar OpenTelemetry en Apache Airflow, deberá instalar el paquete Airflow con el extra otel
. El método de instalación depende de su enfoque de implementación de Airflow:
Opción 1: instalación desde PyPi
Siga las instrucciones de instalación de la documentación de Airflow.
Al instalar con pip, agregue el
otel
adicional al comando. Por ejemplo:bash$pip install "apache-airflow[otel]"
Opción 2: instalación desde docker
Configure la imagen de Airflow Docker siguiendo las instrucciones de la documentación de Airflow.
Amplíe la imagen docker prediseñada utilizando un Dockerfile para instalar el extra
otel
. Puede reemplazar la última etiqueta con la versión que desee de la imagen.FROM apache/airflow:latestRUN pip install --no-cache-dir "apache-airflow[otel]==$AIRFLOW_VERSION"
Sugerencia
$AIRFLOW_VERSION
ya está configurado por el contenedor apache/airflow, pero se puede reemplazar con un número de versión para otras imágenes base.
Configuración
Para enviar Airflow métrica a New Relic, configure OpenTelemetry métrica para exportar datos a un OpenTelemetry recolector, que luego enviará los datos a un extremo New Relic OTLP usando un .
Importante
Debido a la falta actual de soporte de Airflow para enviar datos OpenTelemetry con encabezados de autenticación, el recolector OpenTelemetry es esencial para la autenticación con New Relic.
Configurar el recolector OpenTelemetry
- Siga el ejemplo básico del recolector para configurar su recolector OpenTelemetry .
- Configure el recolector con su extremo OTLP apropiado, como
https://otlp.nr-data.net:4317
. - Para la autenticación, agregue su a la variable de entorno
NEW_RELIC_LICENSE_KEY
para que complete el encabezadoapi-key
. - Cerciorar de que el puerto 4318 en el recolector sea accesible desde la instancia de Airflow en ejecución. (Para docker, es posible que necesites usar una reddocker ).
- lanzar el recolector.
Configurar flujo de aire métrico
Airflow envía métrica usando OTLP sobre HTTP, que usa el puerto 4318
. Airflow tiene múltiples métodos para configurar las opciones de configuración.
Importante
Si su entorno tiene Airflow ejecutar en un contenedor docker junto con el recolector OpenTelemetry , deberá cambiar la configuración otel_host
de localhost
a la dirección del contenedor del recolector.
Elija uno de los siguientes métodos para configurar las opciones requeridas para Airflow.
Configure las opciones requeridas en el archivo
airflow.cfg
.[metrics]otel_on = Trueotel_host = localhostotel_port = 4318otel_ssl_active = FalseO establezca las opciones requeridas como variables de entorno.
bash$export AIRFLOW__METRICS__OTEL_ON=True$export AIRFLOW__METRICS__OTEL_HOST=localhost$export AIRFLOW__METRICS__OTEL_PORT=4318$export AIRFLOW__METRICS__OTEL_SSL_ACTIVE=False
Sugerencia
Airflow tiene configuraciones métricas adicionales que pueden resultar útiles. Esto incluye la capacidad de cambiar el nombre de las métricas antes de enviarlas, lo cual resulta útil si los nombres de las métricas exceden el límite de 63 bytes para OpenTelemetry.
Los datos de validación se envían a New Relic
Para confirmar que New Relic está recopilando sus datos de Airflow, ejecute un DAG o una tubería:
- Inicie sesión en flujo de aire.
- Haga clic en el botón Ejecutar en uno de los DAG del tutorial existente, o en el suyo propio.
- Espere a que la canalización termine de ejecutarse.
- Vaya a one.newrelic.com > All capabilities > APM & services > Services - OpenTelemetry > Airflow.
- Haga clic en Metrics Explorer para visualizar métricas para ejecuciones de canalizaciones.
Panel de control del edificio
Con Airflow métrica, puede crear un panel sobre tuberías individuales, el rendimiento general o ver una comparación entre diferentes tuberías. Haga clic aquí para obtener más información sobre cómo consultar su métrica.
Esta consulta recupera una lista de todas las métricas reportadas para Airflow:
SELECT uniques(metricName) FROM Metric WHERE entity.name = 'Airflow' AND metricName LIKE 'airflow.%' SINCE 30 MINUTES AGO LIMIT 100
Asegúrate de cambiar el límite (100
) si tus nombres métricos lo exceden.
Esta consulta muestra una comparación de diferentes tiempos de finalización para ejecuciones exitosas de diferentes DAG:
SELECT latest(airflow.dagrun.duration.success) FROM Metric FACET dag_id WHERE entity.name = 'Airflow' SINCE 30 minutes AGO TIMESERIES
Esta consulta muestra recuentos de ejecuciones DAG fallidas, que se pueden utilizar para crear para canalizaciones críticas:
SELECT count(airflow.dagrun.duration.failed) FROM Metric FACET dag_id WHERE entity.name = 'Airflow' SINCE 30 minutes AGO TIMESERIES
Importante
New Relic no mantiene las métricas OpenTelemetry de Airflow, por lo que si tiene algún problema con la instrumentación, cree un nuevo problema en el repositorio de GitHub de Airflow.