Micrometer en Java: guía completa con ejemplos prácticos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

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

Recommendations