Intégration des métriques Prometheus dans les applications Java : bibliothèque simpleclient

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

Métriques Prometheus en Java : bibliothèque simpleclient

\n

Prometheus est un puissant système de surveillance et d'alerte open source qui collecte des métriques provenant de diverses sources. Pour les applications Java, il existe plusieurs bibliothèques pour l'intégration avec Prometheus. La principale et la plus populaire est simpleclient du projet Prometheus lui-même. Elle offre un moyen minimaliste, thread-safe et haute performance pour créer, enregistrer et exporter des métriques.

\n\n

Qu'est-ce que simpleclient ?

\n

simpleclient est la bibliothèque Java officielle de Prometheus, qui permet aux développeurs d'ajouter des métriques aux applications avec une surcharge minimale. Elle prend en charge quatre types principaux de métriques :

\n
    \n
  • Counter — un compteur qui ne fait qu'augmenter (par exemple, le nombre de requêtes).
  • \n
  • Gauge — une valeur qui peut à la fois augmenter et diminuer (par exemple, le nombre de connexions actives, la température).
  • \n
  • Histogram — un histogramme mesurant la distribution des valeurs (par exemple, le temps d'exécution des requêtes).
  • \n
  • Summary — un résumé similaire à un histogramme, mais calculant les quantiles côté client.
  • \n
\n\n

Installation et configuration

\n

Pour travailler avec simpleclient, ajoutez les dépendances suivantes dans pom.xml (Maven) :

\n
<dependency>\n    <groupId>io.prometheus</groupId>\n    <artifactId>simpleclient</artifactId>\n    <version>0.16.0</version>\n</dependency>\n<dependency>\n    <groupId>io.prometheus</groupId>\n    <artifactId>simpleclient_hotspot</artifactId>\n    <version>0.16.0</version>\n</dependency>\n<dependency>\n    <groupId>io.prometheus</groupId>\n    <artifactId>simpleclient_servlet</artifactId>\n    <version>0.16.0</version>\n</dependency>
\n

Pour Gradle :

\n
implementation 'io.prometheus:simpleclient:0.16.0'\nimplementation 'io.prometheus:simpleclient_hotspot:0.16.0'\nimplementation 'io.prometheus:simpleclient_servlet:0.16.0'
\n\n

Création et enregistrement des métriques

\n

Examinons la création d'un simple compteur de requêtes. Les métriques sont enregistrées dans le registre global CollectorRegistry.defaultRegistry.

\n
import io.prometheus.client.Counter;\nimport io.prometheus.client.Gauge;\n\npublic class MetricsExample {\n    // Création d'un compteur nommé "http_requests_total" avec les labels "method" et "endpoint"\n    static final Counter requests = Counter.build()\n            .name("http_requests_total")\n            .help("Total number of HTTP requests.")\n            .labelNames("method", "endpoint")\n            .register();\n\n    // Création d'une jauge pour le nombre de sessions actives\n    static final Gauge activeSessions = Gauge.build()\n            .name("active_sessions")\n            .help("Current number of active sessions.")\n            .register();\n\n    public static void processRequest(String method, String endpoint) {\n        // Incrémentation du compteur\n        requests.labels(method, endpoint).inc();\n        // Définition de la valeur de la jauge (par exemple, la taille de la file d'attente)\n        activeSessions.set(42);\n    }\n}
\n\n

Export des métriques via HTTP

\n

Pour que Prometheus puisse collecter les métriques, il faut fournir un endpoint /metrics. Le moyen le plus simple est d'utiliser la servlet intégrée. Si vous utilisez Spring Boot, ajoutez la dépendance simpleclient_spring_boot.

\n
import io.prometheus.client.exporter.MetricsServlet;\nimport io.prometheus.client.hotspot.DefaultExports;\nimport javax.servlet.annotation.WebServlet;\nimport javax.servlet.http.HttpServlet;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport java.io.IOException;\n\n@WebServlet("/metrics"                    

Recommendations