Observabilidade com Grafana, Prometheus e OpenTelemetry


 

Introdução

A observabilidade é uma das chaves para garantir a confiabilidade de sistemas modernos, ferramentas como Grafana, Prometheus e OpenTelemetry trabalham em conjunto para oferecer visibilidade em tempo real das aplicações. 

Neste artigo, vamos entender como essas tecnologias se conectam explorando conceitos, práticas e exemplos reais de uso para monitorar métricas de forma eficiente

 

O que é OpenTelemetry?

OpenTelemetry é um conjunto de ferramentas, APIs e SDKs que ajudam a coletar, processar e exportar dados de telemetria (métricas, logs e traces) de forma padronizada. Ele permite instrumentar sua aplicação sem se prender a uma ferramenta específica de backend.

Ele funciona em 3 etapas principais:

  • Instrumentação: Coleta de dados dentro da aplicação (ex: tempo de resposta de um endpoint)

  • Processamento: O SDK do OpenTelemetry pode agregar, filtrar ou enriquecer as métricas

  • Exportação: Os dados são enviados para ferramentas como Prometheus, New Relic, Grafana, entre outras, quando exportadas já se encontraram pronta para uso

 

O que é o Prometheus?

Prometheus é um sistema de monitoramento e banco de dados de séries temporais. Ele coleta métricas via pull, buscando periodicamente nos endpoints expostos pelas aplicações instrumentadas.

Características:

  • Armazena métricas como séries temporais (timestamp + valor)

  • Usa PromQL (Prometheus Query Language) para consultas

  • Ideal para métricas como contadores, gauges, histograms e summaries

     

O que é o Grafana?

Grafana é a interface visual para tudo isso. Com ele, você cria dashboards, painéis interativos e alertas com base nas métricas que o Prometheus coleta.

Você pode visualizar:

  • Total de requisições por serviço

  • Taxa de erros por endpoint

  • Latência média de respostas

  • Uso de memória ou CPU por pod

  

Integração do OpenTelemetry com Prometheus

A integração entre OpenTelemetry e Prometheus é feita de forma simples e eficiente: o OpenTelemetry expõe um endpoint no formato compreendido pelo Prometheus, e o Prometheus coleta essas métricas periodicamente via scraping.

Como funciona essa integração?

  1. Instrumentação com OpenTelemetry:
    A aplicação é instrumentada usando o SDK do OpenTelemetry (ex: em Java, Python, etc.), definindo métricas do tipo Caunter, Gauge, Histogram

  2. Exposição via endpoint:
    As métricas são expostas em um endpoint HTTP, normalmente /metrics ou 
    /actuator/prometheus se você estiver usando Spring Boot com Micrometer + OpenTelemetry

  3. Scraping pelo Prometheus:
    O Prometheus acessa esse endpoint periodicamente (pull model) e armazena as métricas em sua base de dados de séries temporais

     Importante: o OpenTelemetry não suporta o tipo summary, o recomendado é sempre usar histogram para obter percentis e distribuição de forma compatível com Prometheus

  Exemplo prático: Exportando Métricas com OpenTelemetry no Spring Boot

Abaixo vou colocar como funcionaria um exemplo pratico da exportação dessas métricas

 

Nesse caso a única configuração a mais necessária seria expor a rota das métricas no seu properties como o exemplo abaixo
 
management.endpoints.web.exposure.include=*
management.endpoint.prometheus.enabled=true
 

Conclusão

Grafana, Prometheus e OpenTelemetry formam uma stack poderosa para observabilidade. Com eles, é possível antecipar falhas, identificar gargalos e entender o comportamento da aplicação com dados reais.

 

Comments

Popular posts from this blog

Spring VS Micronaut VS Quarkus

Spring + Redis: Como melhorar sua aplicação com caching

Java + Kafka, Como essa parceria fucniona ?