Métriques Prometheus dans Node.js : bibliothèque prom-client

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 dans Node.js : bibliothèque prom-client

\n\n

Prometheus 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\n

Dans 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\n

Installation de prom-client

\n\n

L'installation de la bibliothèque se fait avec le gestionnaire de paquets standard npm :

\n\n
npm install prom-client
\n\n

Après l'installation, vous pouvez importer la bibliothèque dans votre projet :

\n\n
const client = require('prom-client');
\n\n

Principaux types de métriques Prometheus

\n\n

Prometheus 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
\n\n

Exemples d'utilisation de prom-client

\n\n

Voyons la création de chaque type de métrique à l'aide d'un exemple simple d'application Express.

\n\n

1. Counter (compteur)

\n\n

Le compteur est idéal pour compter le nombre d'événements, comme les requêtes HTTP ou les erreurs.

\n\n
const 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\n

2. Gauge (jauge)

\n\n

La jauge permet de suivre une valeur courante qui peut varier dans les deux sens.

\n\n
const 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\n

3. Histogram (histogramme)

\n\n

L'histogramme aide à analyser la distribution des temps d'exécution des opérations.

\n\n
const 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\n

4. Summary (sommaire)

\n\n

Le summary est similaire à l'histogramme, mais fournit des quantiles précis (par exemple, la médiane, le 95e percentile).

\n\n
const 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\n

Configuration de l'endpoint pour Prometheus

\n\n

Pour 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.

Recommendations