Guia completo do Micrometer para Java com exemplos práticos
1. O que é e para que serve
Micrometer é uma biblioteca para coleta de métricas de aplicações Java (e linguagens JVM), que fornece uma fachada sobre sistemas populares de monitoramento, como Prometheus, Graphite, Datadog, InfluxDB, New Relic e outros. Ela implementa a especificação Micrometer Observation API e é o padrão de fato para coleta de métricas no ecossistema Spring Boot (a partir da versão 2.0).
Para que serve? Em arquiteturas modernas de microsserviços, é fundamental entender o que acontece com a aplicação: quantas requisições estão sendo processadas, qual a latência das respostas, quanta memória está sendo consumida, com que frequência ocorrem erros. O Micrometer permite unificar a coleta desses dados sem ficar preso a um backend específico de monitoramento. Você escreve o código uma vez e alterna entre Prometheus, Graphite ou CloudWatch apenas alterando a dependência no pom.xml ou build.gradle.
A biblioteca oferece um conjunto rico de ferramentas: contadores (Counter), histogramas (Histogram), temporizadores (Timer), distribuições (DistributionSummary), além de suporte a tags para agregação multidimensional de métricas. A integração nativa com a JVM (coletor de lixo, threads, memória) e frameworks populares (Spring, Hibernate, Jetty, Tomcat) a torna indispensável para monitoramento em produção.
2. Instalação
O Micrometer é distribuído via Maven Central. Para projetos Java, utiliza-se Maven ou Gradle. Abaixo estão os comandos exatos para adicionar as dependências.
Maven (pom.xml)
<!-- Módulo principal do Micrometer -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>
<version>1.14.5</version> <!-- Verifique a versão mais recente no mvnrepository.com -->
</dependency>
<!-- Registro para Prometheus -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.14.5</version>
</dependency>
Gradle (build.gradle)
dependencies {
implementation 'io.micrometer:micrometer-core:1.14.5'
implementation 'io.micrometer:micrometer-registry-prometheus:1.14.5'
}
Importante: Se você usa Spring Boot, basta adicionar spring-boot-starter-actuator e micrometer-registry-prometheus — o Spring Boot configurará automaticamente o MeterRegistry.
3. Início rápido — exemplo mínimo funcional
Vamos criar uma aplicação de console simples que coleta métricas e as exporta no formato Prometheus.
import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.prometheus.PrometheusConfig;
import io.micrometer.prometheus.PrometheusMeterRegistry;
public class QuickStart {
public static void main(String[] args) throws InterruptedException {
// 1. Cria o registro de métricas para Prometheus
PrometheusMeterRegistry registry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
// 2. Cria um contador
Counter counter = Counter.builder("my.counter")
.description("Exemplo de contador")
.tag("env", "test")
.register(registry);
// 3. Incrementa o contador em um loop
for (int i = 0; i < 5; i++) {
counter.increment();
Thread.sleep(1000);
}
// 4. Exibe as métricas no formato Prometheus
System.out.println("=== Prometheus Metrics ===");
System.out.println(registry.scrape());
}
}
Saída no console:
=== Prometheus Metrics ===
# HELP my_counter_total Exemplo de contador
# TYPE my_counter_to