Monitoramento de Pipelines do Airflow com Prometheus, StatsD e Grafana

Ricardo Junior
Data Hackers
Published in
9 min readNov 28, 2024

Explore com uma abordagem prática como monitorar e visualizar seus pipelines de dados no Apache Airflow com Prometheus, StatsD e Grafana. Descubra como configurar métricas essenciais e obter insights para otimizar a performance e a confiabilidade dos fluxos de trabalho

1. Introdução 📘

O Apache Airflow tornou-se uma das ferramentas mais populares na comunidade de dados e engenharia para orquestração de workflows complexos. Com sua ampla adoção, é muito raro uma pessoa de tecnologia nunca ter ouvido falar dessa ferramenta. Tanto em pequenas startups quanto em grandes empresas, o Airflow se consolidou como uma solução muito boa para orquestrar pipelines de dados. Ele permite a execução e o gerenciamento de tarefas em uma escala que facilita desde processos de ETL simples até fluxos de dados complexos com inúmeras dependências.

No entanto, com o uso cada vez mais intenso do Airflow, a necessidade de monitorar esses pipelines se torna essencial. Métricas de desempenho e confiabilidade são fundamentais para garantir que os pipelines estão funcionando conforme o esperado, identificar gargalos e responder rapidamente a falhas. Sem uma visibilidade clara sobre o status das tarefas e o tempo de execução, problemas podem passar despercebidos, impactando diretamente a qualidade e a eficiência dos processos de dados.

Neste artigo, exploraremos como implementar uma solução completa de monitoramento para o Airflow utilizando StatsD, Prometheus e Grafana. No desenvolvimento desse post, faremos um dashboard no Grafana para ter acessar a métricas de desempenho, permitindo gerenciar melhor nossos pipelines de dados e aumentando a confiabilidade do sistema.

Todo o código desse post está disponível no repositório do GitHub.

2. Visão Geral das Ferramentas 📖

Para monitorar bem os pipelines de dados no Apache Airflow, é essencial entender as ferramentas que compõem essa solução e como elas se conectam. A combinação de StatsD, Prometheus e Grafana oferece uma abordagem completa para coletar, armazenar e visualizar métricas, proporcionando uma visão detalhada e prática dos workflows.

2.1 Apache Airflow

O Apache Airflow é uma plataforma de código aberto para organizar e gerenciar workflows, muito popular na comunidade de dados. Sua flexibilidade permite que você crie, agende e monitore pipelines de dados complexos, facilitando a automação e o controle de processos de ponta a ponta.

2.2 StatsD

O StatsD funciona como um intermediário para métricas, recebendo dados de várias aplicações e os encaminhando para sistemas de monitoramento. No caso do Airflow, o StatsD coleta métricas geradas pelo Airflow e as envia para o Prometheus.

2.3 Prometheus

O Prometheus é uma plataforma de monitoramento e alertas de código aberto que coleta e armazena métricas ao longo do tempo. Ele coleta as métricas do StatsD e as organiza para que você possa fazer consultas e criar alertas.

2.4 Grafana

O Grafana é uma ferramenta de visualização de métricas que permite criar dashboards personalizados e interativos. Integrado ao Prometheus, o Grafana possibilita visualizar as métricas em tempo real, o que ajuda a monitorar os pipelines e detectar gargalos ou falhas.

2.5 Arquitetura da Solução

A arquitetura de integração dessas ferramentas funciona da seguinte forma:

Arquitetura da Solução
  1. Apache Airflow: Gera métricas de desempenho e status dos pipelines.
  2. StatsD: Recebe as métricas do Airflow e as encaminha para o Prometheus.
  3. Prometheus: Coleta e armazena as métricas recebidas do StatsD.
  4. Grafana: Conecta-se ao Prometheus para criar dashboards e visualizar as métricas.

Essa arquitetura modular facilita a coleta de métricas, o armazenamento e a visualização, oferecendo uma solução completa para monitorar pipelines no Airflow.

3. Implementação 🔨

Como mencionando anteriormente, todo o código está disponível no GitHub. Então, você pode clonar o repositório e acompanhar as explicações a seguir. Abaixo, vou explicar como o projeto está organizado e como você buildar todos os serviços — Airflow, Prometheus, Grafana e StatsD — e vamos explicar os conceitos principais.

Antes de iniciarmos, é importante que você tenha o Docker previamente instalado em seu ambiente. O Docker nos permite criar e gerenciar contêineres de forma rápida e eficiente, garantindo que o ambiente de cada serviço (como Airflow, Prometheus, Grafana e StatsD) esteja isolado e funcionando com as configurações necessárias. Isso facilita a reprodução do projeto em diferentes máquinas, sem a necessidade de configurações complexas, e ajuda a evitar problemas de compatibilidade.

3.1 Estrutura do Projeto 🗂️

  • /configs: Aqui ficam os arquivos de configuração do Prometheus e do StatsD. Esses arquivos definem como as métricas serão coletadas e traduzidas para o formato correto.
  • /dags: Contém os arquivos das DAGs do Airflow que serão monitoradas. Aqui, você pode adicionar e modificar seus workflows.
  • /grafana: Armazena configurações específicas do Grafana, como dashboards personalizados e outros ajustes de visualização.

3.2 Entendendo os Componentes 🧑‍🏫

No arquivo de docker-compose está as configurações de todos os serviços utilizados nesse post. Usamos o docker-compose dispolibilizado pela documentação oficial do Airflow como base para a construção desse arquivo. Dito isso, o Airflow tem alguns serviços padrão:

  • airflow-scheduler — O scheduler monitora todas as tarefas e DAGs, e então aciona as instâncias de tarefas quando suas dependências são concluídas.
  • airflow-webserver — O servidor web que estará disponível em http://localhost:8080.
  • airflow-worker — O worker que executa as tarefas dadas pelo scheduler.
  • airflow-triggerer — O triggerer executa um loop de eventos para tarefas adiáveis.
  • airflow-init — O serviço de inicialização.
  • postgres — O banco de dados.
  • redis — broker que encaminha mensagens do scheduler para o worker.

A partir disso, adicionamos mais três serviços:

Serviços para monitorar o Airflow

Configuramos o Prometheus, o Grafana e o StatsD Exporter para monitorar o Airflow. O Prometheus utiliza a imagem oficial (prom/prometheus), que expõe a porta 9090 (acessível em http://localhost:9090) e monta o arquivo prometheus-config.yml na pasta /etc/prometheus/prometheus.yml para definir os endpoints a serem monitorados. O Grafana, usando a imagem oficial grafana/grafana:8.2.4, expõe a porta 3000 (acessível em http://localhost:3000), e monta diretórios para dashboards e provisionamento em /grafana/dashboards e /grafana/provisioning. O Grafana só inicia depois que o Prometheus está ativo, e está configurado para usar o Prometheus como fonte de dados. Já o StatsD Exporter usa a imagem quay.io/prometheus/statsd-exporter:v0.26.0, expõe as portas 9125 (para TCP/UDP, onde recebe métricas do StatsD) e 9102 (para expor as métricas convertidas ao Prometheus). Ele monta o arquivo statsd_exporter_mapping.yaml em /etc/statsd_exporter_mapping.yaml, que define o mapeamento das métricas do StatsD para o formato que o Prometheus entende.

Essas configurações permitem que o Prometheus colete as métricas traduzidas pelo StatsD e que o Grafana visualize tudo em dashboards interativos para monitoramento em tempo real.

3.3 Subindo o nosso projeto 🚀

Agora, iremos subir todos os nossos serviços, na pasta que você clonou o repositório, você precisará rodar o seguinte comando:

docker-compose up --build

Se tudo ocorreu corretamente, vamos ter o nosso Airflow disponível em http://localhost:8080/home e com cinco DAGs já criadas, pois usaremos elas para os nossos experimentos.

Airflow

O próximo passo é verificar se o Prometheus está recebendo as métricas do Airflow, podemos verificar isso em http://localhost:29090/metrics. Além disso, todas as métricas estão descritas na documentação oficial do Airflow.

Prometheus Local

Por fim, vamos verificar se o Grafana está ativo, ele estará disponível em http://localhost:23000/:

Monitorando nossas DAGs 📊

Agora, vamos ativar nossas DAGs para elas começaram a enviar métricas, algumas DAGs irão falhar e outras irão dar sucesso, para a gente verificar o comportamento e como podemos monitorar. Além disso, o Grafana já subirá com dois dashboards , que foram clonados do projeto databand-ai, para monitorar o nosso Airflow.

Dashboards de monitoramento
Cluster Dashboard
DAG Dashboard

Os dashboards incluem gráficos que mostram:

  • Número de DAGs em execução e concluídas: Ideal para ter uma visão geral do status das DAGs, com destaque para aquelas que tiveram sucesso e para as que falharam.
  • Duração das Tarefas: Exibe o tempo de execução das tarefas, ajudando a identificar possíveis gargalos ou tarefas que demoram mais do que o esperado.
  • Falhas e Erros de Importação: Monitora erros que ocorreram durante o processamento das DAGs, alertando sobre problemas que podem afetar o scheduler ou o executor.
  • Utilização do Scheduler: Mostra quantas tarefas o scheduler está gerenciando, permitindo analisar se o Airflow está sendo sobrecarregado.
  • Uso de Recursos: Inclui métricas como número de operadores em execução e tarefas em fila, ajudando a monitorar o uso dos workers e o gerenciamento dos slots disponíveis.

Esses dashboards já vêm configurados para mostrar as principais métricas, mas você também pode personalizá-los ou criar novos painéis de acordo com as métricas que são mais relevantes para o seu ambiente. Com essas informações em tempo real, você consegue identificar rapidamente problemas, otimizar o tempo de execução das tarefas e garantir que os pipelines do Airflow estão operando de forma eficiente.

4. Benefícios 💡

Monitorar o Apache Airflow com ferramentas como StatsD, Prometheus e Grafana oferece uma série de benefícios que vão muito além de simplesmente verificar se um pipeline foi concluído. Aqui estão alguns dos principais ganhos:

Benefícios

Visibilidade Completa do Pipeline

  • Com o monitoramento, você consegue enxergar em tempo real o que está acontecendo em cada tarefa e etapa do pipeline. Essa visibilidade ajuda a identificar gargalos e a entender a performance geral do workflow.

Detecção de Erros e Resolução Rápida

  • Acompanhar métricas como o número de tarefas com falha ou o tempo de execução permite detectar rapidamente falhas ou atrasos. Com alertas configurados, você pode ser notificado sobre problemas assim que eles ocorrem, permitindo ações corretivas imediatas e minimizando o impacto.

Otimização de Recursos

  • Ao monitorar o uso de recursos, como o número de slots em execução e em espera, é possível otimizar a alocação de recursos do Airflow e ajustar o escalonamento dos pipelines. Isso pode resultar em melhor uso da infraestrutura e, consequentemente, redução de custos.

Melhoria Contínua e Insights para Ajustes

  • Com dashboards e dados históricos, você pode analisar tendências ao longo do tempo. Isso permite ajustar a frequência e a ordem das tarefas, identificar tarefas que precisam de mais recursos ou ajustar SLAs.

Melhores Práticas de Monitoramento

Defina Métricas Prioritárias

  • Escolha as métricas mais relevantes para monitorar, como sucesso e falha das DAGs, tempo de execução das tarefas e uso de slots. Concentre-se em métricas que trazem insights diretos sobre a performance e a confiabilidade dos pipelines.

Implemente Alertas Inteligentes

  • Configure alertas para eventos críticos, como falhas repetidas, atrasos significativos ou SLAs não cumpridos. Defina limites para evitar alertas em excesso e mantenha a equipe focada em incidentes realmente importantes.

Automatize a Rastreabilidade dos Erros

  • Configure o Airflow para registrar logs detalhados e use ferramentas de monitoramento para rastrear onde e por que os erros ocorrem. A rastreabilidade ajuda a investigar problemas rapidamente, poupando tempo na resolução.

Promova a Cultura de Observabilidade

  • Envolva toda a equipe nos benefícios do monitoramento, compartilhando dashboards e promovendo o uso de insights para melhorar o trabalho. Uma equipe bem-informada pode responder mais rápido a problemas e ajudar a otimizar processos.

Ao adotar essas práticas, o monitoramento do Airflow se torna uma ferramenta poderosa para garantir a eficiência e confiabilidade dos pipelines. Com dados precisos e atualizados, sua equipe pode otimizar fluxos de trabalho, antecipar problemas e continuar entregando resultados consistentes com alta qualidade.

5. Conclusão

Implementar um monitoramento para o Apache Airflow com Prometheus, StatsD e Grafana é uma maneira prática e eficiente de acompanhar o que está acontecendo nos pipelines. Com essas ferramentas trabalhando juntas, conseguimos ver métricas em tempo real, identificar gargalos, otimizar o uso de recursos e agir rapidamente quando algo dá errado.

Neste artigo, vimos como cada ferramenta tem seu papel: o Prometheus coleta e armazena as métricas, o StatsD faz a ponte para integrar o Airflow, e o Grafana transforma esses dados em dashboards visuais, facilitando a análise e o acompanhamento.

Com essa estrutura de monitoramento, você tem tudo o que precisa para gerenciar seus pipelines de dados de forma mais tranquila e eficiente. Além de ajudar a melhorar a performance, esse tipo de monitoramento dá mais confiança para a equipe, garantindo que o Airflow está funcionando como esperado.

Espero que tenha sido útil para você esse artigo! Caso desejem enviar sugestões , queiram outros temas de post, feedbacks ou apenas trocar um papo legal podem falar comigo no meu Linkedin :) . Se gostou , curte e compartilha para chegar em mais pessoas :).

--

--

Ricardo Junior
Ricardo Junior

Written by Ricardo Junior

Data Engineer - Sênior | Ml Engineer | Python | AWS | Azure | LinkedIn: shorturl.at/GPY35

No responses yet