Métriques Prometheus dans Node.js : bibliothèque prom-client
\n\nPrometheus est un puissant système de surveillance et d'alerte open source qui collecte des métriques depuis vos applications et votre infrastructure. Pour intégrer Prometheus avec des applications Node.js, il existe la bibliothèque officielle et la plus populaire prom-client. Elle fournit des outils prêts à l'emploi pour créer, enregistrer et exporter des métriques dans un format compréhensible par Prometheus.
\n\nDans cet article, nous allons détailler comment installer et utiliser prom-client, quels types de métriques sont disponibles, et comment configurer un endpoint pour la collecte de données.
\n\nInstallation de prom-client
\n\nL'installation de la bibliothèque se fait avec le gestionnaire de paquets standard npm :
\n\nnpm install prom-client\n\nAprès l'installation, vous pouvez importer la bibliothèque dans votre projet :
\n\nconst client = require('prom-client');\n\nPrincipaux types de métriques Prometheus
\n\nPrometheus prend en charge quatre types principaux de métriques, chacun répondant à un besoin spécifique :
\n\n- \n
- Counter — un compteur qui ne peut qu'augmenter (par exemple, le nombre de requêtes, d'erreurs). \n
- Gauge — une valeur qui peut aussi bien augmenter que diminuer (par exemple, le nombre d'utilisateurs actifs, l'utilisation mémoire). \n
- Histogram — un histogramme pour mesurer la distribution des valeurs (par exemple, le temps de réponse des requêtes). \n
- Summary — similaire à l'histogramme, mais calcule les quantiles côté application. \n
Exemples d'utilisation de prom-client
\n\nVoyons la création de chaque type de métrique à l'aide d'un exemple simple d'application Express.
\n\n1. Counter (compteur)
\n\nLe compteur est idéal pour compter le nombre d'événements, comme les requêtes HTTP ou les erreurs.
\n\nconst httpRequestsCounter = new client.Counter({\n name: 'http_requests_total',\n help: 'Total number of HTTP requests',\n labelNames: ['method', 'status']\n});\n\n// Utilisation :\nhttpRequestsCounter.inc({ method: 'GET', status: 200 });\nhttpRequestsCounter.inc({ method: 'POST', status: 500 });\n\n2. Gauge (jauge)
\n\nLa jauge permet de suivre une valeur courante qui peut varier dans les deux sens.
\n\nconst activeUsersGauge = new client.Gauge({\n name: 'active_users',\n help: 'Number of active users'\n});\n\n// Augmenter de 1 :\nactiveUsersGauge.inc();\n// Diminuer de 1 :\nactiveUsersGauge.dec();\n// Définir une valeur spécifique :\nactiveUsersGauge.set(42);\n\n3. Histogram (histogramme)
\n\nL'histogramme aide à analyser la distribution des temps d'exécution des opérations.
\n\nconst requestDurationHistogram = new client.Histogram({\n name: 'http_request_duration_seconds',\n help: 'Duration of HTTP requests in seconds',\n labelNames: ['method', 'route'],\n buckets: [0.1, 0.5, 1, 2, 5] // limites des intervalles (en secondes)\n});\n\n// Mesure du temps :\nconst end = requestDurationHistogram.startTimer();\n// ... exécution de la requête ...\nend({ method: 'GET', route: '/api/users' });\n\n4. Summary (sommaire)
\n\nLe summary est similaire à l'histogramme, mais fournit des quantiles précis (par exemple, la médiane, le 95e percentile).
\n\nconst requestDurationSummary = new client.Summary({\n name: 'http_request_duration_summary_seconds',\n help: 'Summary of HTTP request duration in seconds',\n labelNames: ['method', 'route'],\n percentiles: [0.5, 0.9, 0.99] // quantiles à calculer\n});\n\n// Utilisation similaire à l'histogramme :\nconst endSummary = requestDurationSummary.startTimer();\n// ... exécution de la requête ...\nendSummary({ method: 'GET', route: '/api/data' });\n\nConfiguration de l'endpoint pour Prometheus
\n\nPour que Prometheus puisse collecter les métriques, il est nécessaire de créer un endpoint HTTP dédié (généralement /metrics) qui renverra les données.
Aussi dans la bibliothèque
Génération de rapports PDF en C# (.NET) avec iTextSharp et QuestPDF
AVFoundation Swift : guide complet avec exemples
Génération de rapports PDF en C++ avec libharu et PoDoFo
Packages Spatie pour PHP : guide complet avec exemples