Monitorando Aplicações Spring Boot com Prometheus e Grafana

Se você está desenvolvendo aplicações Spring Boot e quer garantir que elas estejam performando bem em produção, monitorar métricas é essencial. Neste guia, vamos configurar o Prometheus (um sistema de monitoramento e alerta) e o Grafana (uma ferramenta de visualização de dados) para coletar e exibir métricas de uma aplicação Spring Boot em menos de 30 minutos.

Requisitos

  • Uma aplicação Spring Boot (pode ser um projeto novo ou existente)
  • Docker instalado (para rodar Prometheus e Grafana)
  • Conhecimento básico de Spring Boot e YAML

1. Adicionando Dependências ao Spring Boot

Para expor métricas no formato que o Prometheus entende, adicione as seguintes dependências no seu pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

Isso habilita endpoints do Actuator (como /actuator/prometheus) que o Prometheus vai consumir.

2. Configurando o Actuator

No application.yml (ou application.properties), adicione:

management:
  endpoints:
    web:
      exposure:
        include: health, prometheus, metrics
  metrics:
    tags:
      application: minha-aplicacao-spring

Isso expõe os endpoints necessários e adiciona tags para melhor organização das métricas.

3. Rodando Prometheus e Grafana com Docker

Crie um arquivo docker-compose.yml com:

version: '3'
services:
  prometheus:
    image: prom/prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'

  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    depends_on:
      - prometheus

E um prometheus.yml para configurar o scrape (coleta) de métricas:

global:
  scrape_interval: 5s

scrape_configs:
  - job_name: 'spring-boot-app'
    metrics_path: '/actuator/prometheus'
    static_configs:
      - targets: ['host.docker.internal:8080'] # Se sua app roda na porta 8080 localmente

Nota: Se sua aplicação Spring Boot estiver rodando fora do Docker, use host.docker.internal para acessá-la.

4. Iniciando Tudo

Execute:

docker-compose up -d

Agora, você pode acessar:

  • Prometheus: http://localhost:9090
  • Grafana: http://localhost:3000 (login: admin/admin)

5. Configurando Grafana para Visualizar Métricas

  1. No Grafana, vá em “Data Sources” e adicione o Prometheus (URL: http://prometheus:9090).
  2. Importe um dashboard pronto para Spring Boot (ID 4701 ou 6756).
  3. Pronto! Agora você tem gráficos de:
  • Requisições por segundo
  • Tempo de resposta
  • Uso de CPU/Memória
  • Métricas de banco de dados (se aplicável)

Conclusão

Em menos de 30 minutos, você configurou um sistema de monitoramento completo para sua aplicação Spring Boot! Agora, você pode:

  • Identificar gargalos de performance
  • Monitorar a saúde da aplicação em tempo real
  • Criar alertas no Grafana/Prometheus

Quer se aprofundar? Explore métricas customizadas com Micrometer ou configure alertas no Prometheus!

Links Úteis:

Deixe um comentário