Micrometer Java : guide complet avec exemples
1. Qu'est-ce que Micrometer et pourquoi l'utiliser ?
Micrometer est une bibliothèque de collecte de métriques pour applications Java (et langages JVM), fournissant une façade au-dessus des systèmes de monitoring populaires tels que Prometheus, Graphite, Datadog, InfluxDB, New Relic et autres. Elle implémente la spécification Micrometer Observation API et constitue le standard de facto pour la collecte de métriques dans l'écosystème Spring Boot (depuis la version 2.0).
Pourquoi en avez-vous besoin ? Dans les architectures microservices modernes, il est crucial de comprendre ce qui se passe dans votre application : combien de requêtes sont traitées, quel est le temps de réponse, combien de mémoire est consommée, à quelle fréquence les erreurs surviennent. Micrometer permet d'uniformiser la collecte de ces données sans vous attacher à un backend de monitoring spécifique. Vous écrivez le code une fois, et basculer entre Prometheus, Graphite ou CloudWatch se fait simplement en modifiant une dépendance dans pom.xml ou build.gradle.
La bibliothèque offre un ensemble riche d'outils : compteurs (Counter), histogrammes (Histogram), minuteurs (Timer), résumés de distribution (DistributionSummary), ainsi que la prise en charge des tags pour l'agrégation multidimensionnelle des métriques. L'intégration native avec la JVM (garbage collector, threads, mémoire) et les frameworks populaires (Spring, Hibernate, Jetty, Tomcat) la rend indispensable pour le monitoring en production.
2. Installation
Micrometer est distribué via Maven Central. Pour les projets Java, on utilise Maven ou Gradle. Voici les commandes exactes pour ajouter les dépendances.
Maven (pom.xml)
<!-- Module principal Micrometer -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-core</artifactId>
<version>1.14.5</version> <!-- Vérifiez la version actuelle sur mvnrepository.com -->
</dependency>
<!-- Enregistrement pour 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'
}
Important : Si vous utilisez Spring Boot, il suffit d'ajouter spring-boot-starter-actuator et micrometer-registry-prometheus — Spring Boot configurera automatiquement le MeterRegistry.
3. Démarrage rapide — exemple minimal fonctionnel
Créons une simple application console qui collecte des métriques et les exporte au format 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 DemarrageRapide {
public static void main(String[] args) throws InterruptedException {
// 1. Créer un registre de métriques pour Prometheus
PrometheusMeterRegistry registry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
// 2. Créer un compteur
Counter counter = Counter.builder("mon.compteur")
.description("Exemple de compteur")
.tag("env", "test")
.register(registry);
// 3. Incrémenter le compteur dans une boucle
for (int i = 0; i < 5; i++) {
counter.increment();
Thread.sleep(1000);
}
// 4. Afficher les métriques au format Prometheus
System.out.println("=== Métriques Prometheus ===");
System.out.println(registry.scrape());
}
}
Sortie console :
=== Métriques Prometheus ===
# HELP mon_compteur_total Exemple de compteur
# TYPE mon_compteur_to