Monitoramento de aplicações Java: biblioteca Micrometer e integração com Prometheus

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Monitoramento de aplicações Java: biblioteca Micrometer



As aplicações Java modernas exigem monitoramento constante de desempenho, consumo de memória, tempo de resposta e outros parâmetros críticos. Micrometer é a biblioteca padrão de facto para coleta de métricas no ecossistema Java, que fornece uma API universal e suporta exportação de dados para sistemas populares de monitoramento, como Prometheus, Graphite e Datadog.



O que é Micrometer e por que é necessário?



Micrometer é uma fachada para coleta de métricas, semelhante à forma como SLF4J é uma fachada para logging. Ele abstrai o código da aplicação do sistema de monitoramento específico, permitindo alternar entre backends sem alterar a lógica de negócios.



Principais recursos da biblioteca:

  • Contadores (Counter) — para contagem de eventos (por exemplo, número de requisições).
  • Temporizadores (Timer) — para medir o tempo de execução de operações.
  • Medidores (Gauge) — para rastrear valores atuais (por exemplo, tamanho do pool de threads).
  • Resumos de Distribuição (DistributionSummary) — para análise de distribuição de valores (por exemplo, tamanho do corpo da requisição).
  • Tags — para adicionar dimensões às métricas (por exemplo, endpoint, status).


Instalação e configuração



Para usar Micrometer em um projeto Maven, adicione a seguinte dependência no pom.xml:



<dependency>    <groupId>io.micrometer</groupId>    <artifactId>micrometer-core</artifactId>    <version>1.12.0</version></dependency>


Se você estiver usando Spring Boot, basta adicionar o starter micrometer-registry-prometheus:



<dependency>    <groupId>io.micrometer</groupId>    <artifactId>micrometer-registry-prometheus</artifactId>    <version>1.12.0</version></dependency>


Após isso, o Spring Boot configurará automaticamente o MeterRegistry e abrirá o endpoint /actuator/prometheus para coleta de métricas.



Exemplos de uso



1. Criando um contador de requisições



Exemplo simples de contagem do número de chamadas de um método:



import io.micrometer.core.instrument.Counter;import io.micrometer.core.instrument.MeterRegistry;

public class RequestCounter { private final Counter requestCounter;

public RequestCounter(MeterRegistry registry) { this.requestCounter = Counter.builder("api.requests") .tag("endpoint", "/users") .description("Total number of requests to /users") .register(registry); }

public void handleRequest() { requestCounter.increment(); // lógica de negócios }}


2. Medindo o tempo de execução com um temporizador



Use Timer.Sample para medir o tempo de execução de um bloco de código:



import io.micrometer.core.instrument.Timer;import io.micrometer.core.instrument.MeterRegistry;

public class RequestTimer { private final Timer requestTimer;

public RequestTimer(MeterRegistry registry) { this.requestTimer = Timer.builder("api.response.time") .tag("endpoint", "/data") .publishPercentiles(0.95, 0.99) .register(registry); }

public String processRequest() { Timer.Sample sample = Timer.start(registry); try { // emulação de atraso Thread.sleep(100); return "OK"; } catch (InterruptedException e) { Thread.currentThread().interrupt(); return "ERROR"; } finally

Recommendations