Micrometer en Java: guía completa con ejemplos prácticos
1. ¿Qué es y para qué sirve?
Micrometer es una biblioteca para recopilar métricas de aplicaciones Java (y lenguajes JVM) que actúa como fachada sobre sistemas de monitoreo populares como Prometheus, Graphite, Datadog, InfluxDB, New Relic y otros. Implementa la especificación Micrometer Observation API y es el estándar de facto para la recolección de métricas en el ecosistema Spring Boot (desde la versión 2.0).
¿Para qué sirve? En las arquitecturas modernas de microservicios es fundamental entender qué sucede con la aplicación: cuántas solicitudes se procesan, cuál es la latencia de las respuestas, cuánta memoria se consume, con qué frecuencia ocurren errores. Micrometer permite unificar la recopilación de estos datos sin atarse a un backend de monitoreo específico. Escribes el código una vez y cambiar entre Prometheus, Graphite o CloudWatch es tan simple como modificar una dependencia en pom.xml o build.gradle.
La biblioteca ofrece un amplio conjunto de herramientas: contadores (Counter), histogramas (Histogram), temporizadores (Timer), distribuciones (DistributionSummary), además de soporte para etiquetas (tags) que permiten agregación multidimensional de métricas. La integración incorporada con la JVM (recolector de basura, hilos, memoria) y frameworks populares (Spring, Hibernate, Jetty, Tomcat) la hace indispensable para el monitoreo en producción.
2. Instalación
Micrometer se distribuye a través de Maven Central. Para proyectos Java se usa Maven o Gradle. A continuación se muestran los comandos exactos para agregar las dependencias.
Maven (pom.xml)
<!-- Módulo principal de Micrometer -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>
<version>1.14.5</version> <!-- Verifica la versión actual en 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: Si usas Spring Boot, solo necesitas agregar spring-boot-starter-actuator y micrometer-registry-prometheus — Spring Boot configurará automáticamente el MeterRegistry.
3. Inicio rápido — ejemplo mínimo funcional
Creemos una aplicación de consola simple que recopile métricas y las exporte en 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 InicioRapido {
public static void main(String[] args) throws InterruptedException {
// 1. Creamos el registro de métricas para Prometheus
PrometheusMeterRegistry registry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
// 2. Creamos un contador
Counter counter = Counter.builder("mi.contador")
.description("Ejemplo de contador")
.tag("entorno", "pruebas")
.register(registry);
// 3. Incrementamos el contador en un bucle
for (int i = 0; i < 5; i++) {
counter.increment();
Thread.sleep(1000);
}
// 4. Mostramos las métricas en formato Prometheus
System.out.println("=== Métricas Prometheus ===");
System.out.println(registry.scrape());
}
}
Salida en consola:
=== Métricas Prometheus ===
# HELP mi_contador_total Ejemplo de contador
# TYPE mi_contador_total counter
mi_contador_total{entorno="pruebas",} 5.0