Surveillance des applications Java : bibliothèque Micrometer et intégration avec Prometheus

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Surveillance des applications Java : bibliothèque Micrometer



Les applications Java modernes nécessitent une surveillance constante des performances, de la consommation mémoire, du temps de réponse et d'autres paramètres critiques. Micrometer est la bibliothèque standard de facto pour la collecte de métriques dans l'écosystème Java, offrant une API universelle et prenant en charge l'export de données vers des systèmes de surveillance populaires tels que Prometheus, Graphite et Datadog.



Qu'est-ce que Micrometer et pourquoi en avez-vous besoin ?



Micrometer est une façade pour la collecte de métriques, similaire à la façon dont SLF4J est une façade pour la journalisation. Il abstrait le code de l'application du système de surveillance spécifique, permettant de basculer entre les backends sans modifier la logique métier.



Principales fonctionnalités de la bibliothèque :

  • Compteurs (Counter) — pour compter les événements (par exemple, le nombre de requêtes).
  • Minuteurs (Timer) — pour mesurer le temps d'exécution des opérations.
  • Jauges (Gauge) — pour suivre les valeurs actuelles (par exemple, la taille du pool de threads).
  • Résumé de distribution (DistributionSummary) — pour analyser la distribution des valeurs (par exemple, la taille du corps de la requête).
  • Étiquettes (Tags) — pour ajouter des dimensions aux métriques (par exemple, endpoint, status).


Installation et configuration



Pour utiliser Micrometer dans un projet Maven, ajoutez la dépendance suivante dans pom.xml :



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


Si vous utilisez Spring Boot, il suffit d'ajouter le starter micrometer-registry-prometheus :



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


Ensuite, Spring Boot configurera automatiquement MeterRegistry et ouvrira le point de terminaison /actuator/prometheus pour la collecte des métriques.



Exemples d'utilisation



1. Création d'un compteur de requêtes



Exemple simple de comptage du nombre d'appels d'une méthode :



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(); // logique métier }}


2. Mesure du temps d'exécution avec un minuteur



Utilisez Timer.Sample pour mesurer le temps d'exécution d'un bloc de code :



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 { // simulation d'un délai Thread.sleep(100); return "OK"; } catch (InterruptedException e) { Thread.currentThread().interrupt(); return "ERROR"; } finally

Recommendations