Métriques Prometheus en Java : guide complet de la bibliothèque simpleclient
Prometheus est un puissant système de monitoring et d'alerte open source, devenu le standard de facto dans le monde Cloud Native. Pour les développeurs Java, il existe plusieurs bibliothèques d'intégration, mais la bibliothèque officielle simpleclient (également connue sous le nom de prometheus/client_java) est la plus populaire et la mieux maintenue. Dans cet article, nous détaillerons comment ajouter des métriques Prometheus à une application Java en utilisant cette bibliothèque.
Qu'est-ce que simpleclient ?
simpleclient est le client Java officiel pour Prometheus, offrant un moyen simple et efficace de créer et d'exporter des métriques. La bibliothèque prend en charge quatre types principaux de métriques Prometheus :
- Counter (Compteur) — une valeur qui augmente de manière monotone (par exemple, le nombre de requêtes).
- Gauge (Jauge) — une valeur qui peut varier arbitrairement (par exemple, la charge CPU actuelle).
- Histogram (Histogramme) — la distribution des valeurs dans des "seaux" prédéfinis (par exemple, le temps de réponse).
- Summary (Résumé) — les quantiles des valeurs observées (par exemple, p50, p99 du temps de réponse).
Installation et configuration
Pour commencer, ajoutez les dépendances suivantes à votre fichier pom.xml (Maven) ou build.gradle (Gradle).
Maven
<dependency> <groupId>io.prometheus</groupId> <artifactId>simpleclient</artifactId> <version>0.16.0</version></dependency>
<!-- Pour exporter les métriques via HTTP --><dependency> <groupId>io.prometheus</groupId> <artifactId>simpleclient_httpserver</artifactId> <version>0.16.0</version></dependency>Gradle
implementation 'io.prometheus:simpleclient:0.16.0'implementation 'io.prometheus:simpleclient_httpserver:0.16.0'Création et utilisation des métriques
Examinons un exemple de création de tous les types principaux de métriques dans une seule classe.
import io.prometheus.client.Counter;import io.prometheus.client.Gauge;import io.prometheus.client.Histogram;import io.prometheus.client.Summary;
public class MetricsExample {
// 1. Counter : nombre de requêtes traitées static final Counter requestsCounter = Counter.build() .name("app_requests_total") .help("Total number of processed requests.") .labelNames("endpoint", "method") .register();
// 2. Gauge : nombre actuel d'utilisateurs actifs static final Gauge activeUsersGauge = Gauge.build() .name("app_active_users") .help("Current number of active users.") .register();
// 3. Histogram : durée d'exécution de la requête en millisecondes static final Histogram requestDurationHistogram = Histogram.build() .name("app_request_duration_ms") .help("Request duration in milliseconds.") .buckets(10, 50, 100, 200, 500, 1000, 5000) .register();
// 4. Summary : quantiles de la durée d'exécution static final Summary requestDurationSummary = Summary.build() .name("app_request_duration_summary_ms") .help("Request duration summary in milliseconds.") .quantile(0.5, 0.05) // p50 avec une marge d'erreur de 5% .quantile(0.99, 0.01) // p99 avec une marge d'erreur de 1% .register();
public static void main(String[] args) throws Exception { // Simulation du traitement des requêtes for (int i = 0; i < 100; i++) { processRequest("/api/users", "GET"); }
// Démarrage du serveur HTTP pour exporter les métriques new HTTPServer(9090); System.out.println("Metrics server started Aussi dans la bibliothèque
ORM pour C++ : comparaison et exemples d'utilisation (ODB, SOCI, SQLiteCpp)
Planificateur de tâches en C++ : création et gestion des tâches