monitor os dados do Apache Airflow configurando o OpenTelemetry para enviar dados para o New Relic, onde você pode visualizar tarefas, operadores e execuções de DAG como métricas.
Pré-requisitos
Antes de ativar o OpenTelemetry no Apache Airflow, você precisará instalar o pacote Airflow com o otel
extra. O método de instalação depende da abordagem de implantação do Airflow:
Opção 1: instalação do PyPi
Siga as instruções de instalação da documentação do Airflow.
Ao instalar com pip, adicione o
otel
extra ao comando. Por exemplo:bash$pip install "apache-airflow[otel]"
Opção 2: instalar a partir docker
Configure a imagem do Airflow Docker usando as instruções da documentação do Airflow.
Estenda a imagem docker pré-criada usando um Dockerfile para instalar o
otel
extra. Você pode substituir a tag mais recente pela versão desejada da imagem.FROM apache/airflow:latestRUN pip install --no-cache-dir "apache-airflow[otel]==$AIRFLOW_VERSION"
Dica
$AIRFLOW_VERSION
já está definido pelo contêiner Apache/airflow, mas pode ser substituído por um número de versão para outras imagens base.
Configuração
Para enviar o Airflow métrica para New Relic, configure o OpenTelemetry métrica para exportar dados para um OpenTelemetry coletor, que então encaminhará os dados para um New Relic OTLP endpoint usando um .
Importante
Devido à atual falta de suporte do Airflow para enviar dados OpenTelemetry com cabeçalhos de autenticação, o coletor OpenTelemetry é essencial para autenticação com New Relic.
Configurar o coletor OpenTelemetry
- Siga o exemplo básico de coletor para configurar seu coletor OpenTelemetry .
- Configure o coletor com seu endpoint OTLP apropriado, como
https://otlp.nr-data.net:4317
. - Para autenticação, adicione à variável de ambiente
NEW_RELIC_LICENSE_KEY
para que ele preencha o cabeçalhoapi-key
. - Certifique-se de que a porta 4318 no coletor possa ser acessada a partir da instância do Airflow em execução. (Para o docker, talvez seja necessário usar uma rede docker.)
- lançar o coletor.
Configurar métrica do Airflow
O Airflow envia métricas usando OTLP sobre HTTP, que usa a porta 4318
. O Airflow possui vários métodos para definir opções de configuração.
Importante
Se o seu ambiente tiver o Airflow em execução em um contêiner docker junto com o coletor OpenTelemetry , você precisará alterar a configuração otel_host
de localhost
para o endereço do contêiner do coletor.
Escolha um dos métodos a seguir para definir as opções necessárias para o Airflow.
Defina as opções necessárias no arquivo
airflow.cfg
.[metrics]otel_on = Trueotel_host = localhostotel_port = 4318otel_ssl_active = FalseOu defina as opções necessárias como variáveis de ambiente.
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
Dica
O Airflow possui configurações adicionais para métricas que podem ser úteis. Isto inclui a capacidade de renomear métricas antes do envio, o que é útil se os nomes de métricas excederem o limite de 63 bytes para OpenTelemetry.
Validar dados enviados para New Relic
Para confirmar que a New Relic está coletando seus dados do Airflow, execute um DAG ou pipeline:
- Faça login no fluxo de ar.
- Clique no botão executar em um dos DAGs de tutorial existentes ou no seu próprio.
- Aguarde até que o pipeline termine de ser executado.
- Vá para one.newrelic.com > All capabilities > APM & services > Services - OpenTelemetry > Airflow.
- Clique em Metrics Explorer para visualizar métricas para execuções de pipeline.
Painel de construção
Com a métrica do Airflow, você pode criar um painel em torno de pipelines individuais, desempenho geral ou visualizar uma comparação entre diferentes pipelines. Clique aqui para saber mais sobre como consultar sua métrica.
Esta consulta recupera uma lista de todas as métricas relatadas para o Airflow:
SELECT uniques(metricName) FROM Metric WHERE entity.name = 'Airflow' AND metricName LIKE 'airflow.%' SINCE 30 MINUTES AGO LIMIT 100
Certifique-se de alterar o limite (100
) se os nomes das suas métricas o excederem.
Esta consulta mostra uma comparação de diferentes tempos de conclusão para execuções bem-sucedidas de diferentes DAGs:
SELECT latest(airflow.dagrun.duration.success) FROM Metric FACET dag_id WHERE entity.name = 'Airflow' SINCE 30 minutes AGO TIMESERIES
Esta consulta mostra contagens de execuções de DAG com falha, que podem ser usadas para criar para pipelines críticos:
SELECT count(airflow.dagrun.duration.failed) FROM Metric FACET dag_id WHERE entity.name = 'Airflow' SINCE 30 minutes AGO TIMESERIES
Importante
As métricas OpenTelemetry do Airflow não são mantidas pela New Relic, portanto, se você tiver algum problema com a instrumentação, crie um novo problema no repositório GitHub do Airflow.