Surveillance des applications Java : outils et bibliothèques pour la collecte de métriques

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 : revue des outils et bibliothèques



Dans le développement moderne, la surveillance des applications Java est devenue une pratique obligatoire. Sans elle, il est impossible de comprendre comment le système se comporte sous charge, où se situent les goulots d'étranglement et comment réagir rapidement aux pannes. Dans cet article, nous allons examiner les bibliothèques et outils clés pour la collecte de métriques, le traçage et la visualisation de l'état des applications Java : Micrometer, Prometheus Java Client, JMX et Java Flight Recorder.



1. Micrometer — une façade pour les métriques



Micrometer est la norme de facto pour la collecte de métriques dans l'écosystème Spring Boot et au-delà. Il fournit une API unifiée qui peut être utilisée avec différents backends : Prometheus, Datadog, Graphite, InfluxDB et autres.



Fonctionnalités principales :

  • Prise en charge des compteurs (Counter), des minuteurs (Timer), des histogrammes (Histogram) et des jauges (Gauge).
  • Intégration automatique avec Spring Actuator.
  • Configuration flexible des tags pour filtrer les métriques.


Exemple d'utilisation de Micrometer avec Prometheus :

// Ajoutez la dépendance dans pom.xml :// <dependency>//     <groupId>io.micrometer</groupId>//     <artifactId>micrometer-registry-prometheus</artifactId>// </dependency>

import io.micrometer.core.instrument.MeterRegistry;import io.micrometer.core.instrument.Counter;import io.micrometer.prometheus.PrometheusMeterRegistry;import io.micrometer.prometheus.PrometheusConfig;

public class MetricsExample { private final Counter requestCounter;

public MetricsExample() { PrometheusMeterRegistry registry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT); requestCounter = Counter.builder("http.requests.total") .description("Total HTTP requests") .tag("method", "GET") .register(registry); }

public void handleRequest() { requestCounter.increment(); }

public String scrapeMetrics() { return registry.scrape(); // retourne les métriques au format Prometheus }}


Micrometer permet de basculer facilement entre les systèmes de surveillance sans modifier le code.



2. Prometheus Java Client — collecte directe de métriques



Prometheus Java Client est la bibliothèque officielle pour exporter les métriques au format Prometheus. Elle est moins abstraite que Micrometer, mais offre un contrôle total sur la collecte des données.



Composants principaux :

  • CollectorRegistry — le registre de toutes les métriques.
  • Counter, Gauge, Histogram, Summary — types de métriques.
  • Serveur HTTP intégré pour l'endpoint /metrics.


Exemple avec un serveur HTTP simple :

import io.prometheus.client.Counter;import io.prometheus.client.exporter.HTTPServer;import io.prometheus.client.hotspot.DefaultExports;

public class PrometheusExample { static final Counter requests = Counter.build() .name("requests_total") .help("Total requests.") .register();

public static void main(String[] args) throws Exception { DefaultExports.initialize(); // ajoute les métriques JVM (mémoire, GC, threads) HTTPServer server = new HTTPServer(8080); // endpoint /metrics

while (true) { requests.inc(); Thread.sleep(1000); } }}


Cette bibliothèque est idéale pour les cas où vous devez configurer rapidement une surveillance sans dépendances superflues.



3. JMX (Java Management Extensions)



JMX est un mécanisme intégré de gestion et de surveillance de la JVM. Il permet d'obtenir des informations sur la mémoire, les threads, les classes, ainsi que de gérer

Recommendations