Surveillance des applications Node.js : Outils et bibliothèques

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 JavaScript (Node.js) : Outils et bibliothèques



La surveillance des applications Node.js est une tâche cruciale pour maintenir la stabilité, les performances et la disponibilité des services. Sans collecte constante de métriques, suivi des erreurs et profilage du code, vous risquez de rencontrer des pannes inattendues, des ralentissements et des fuites mémoire. Dans cet article, nous examinerons les meilleurs outils et bibliothèques pour la surveillance de Node.js, y compris les solutions open source populaires.



Pourquoi la surveillance Node.js est-elle nécessaire ?

Node.js est un environnement asynchrone qui excelle dans les opérations d'E/S, mais présente des particularités nécessitant une attention :

  • Modèle monothread : un code bloquant peut arrêter tout le processus.
  • Fuites mémoire : dues aux fermetures et à une mauvaise gestion des références.
  • Event Loop : ses retards (lag) affectent directement la vitesse de réponse.
  • Erreurs de code asynchrone : les promesses non traitées peuvent passer inaperçues.


Catégories principales d'outils

Pour une surveillance complète de votre application Node.js, vous aurez besoin d'outils de trois catégories :

  • Collecte de métriques (Metrics) : CPU, mémoire, requêtes par seconde, temps de réponse.
  • Profilage (Profiling) : analyse des goulots d'étranglement et de l'event loop.
  • Suivi des erreurs (Error Tracking) : collecte et agrégation automatiques des exceptions.


1. Prometheus + prom-client (Collecte de métriques)

Prometheus est la norme de facto pour la collecte de métriques dans l'infrastructure moderne. Pour Node.js, on utilise la bibliothèque prom-client. Elle permet de créer des histogrammes, des compteurs et des métriques de type gauge.



Installation :

npm install prom-client express


Exemple d'exportation de métriques (server.js) :

const express = require('express');const client = require('prom-client');const app = express();

// Création d'un histogramme pour le temps de réponseconst httpRequestDurationMicroseconds = new client.Histogram({ name: 'http_request_duration_ms', help: 'Duration of HTTP requests in ms', labelNames: ['method', 'route', 'status'], buckets: [50, 100, 200, 500, 1000, 2000]});

// Middleware pour mesurer le tempsapp.use((req, res, next) => { const end = httpRequestDurationMicroseconds.startTimer(); res.on('finish', () => { end({ method: req.method, route: req.route?.path || 'unknown', status: res.statusCode }); }); next();});

// Point de terminaison pour Prometheusapp.get('/metrics', async (req, res) => { res.set('Content-Type', client.register.contentType); res.end(await client.register.metrics());});

app.get('/', (req, res) => res.send('Hello World!'));app.listen(3000, () => console.log('Server running on port 3000'));


Vous pouvez maintenant configurer Prometheus pour collecter les métriques depuis /metrics et les visualiser dans Grafana.



2. PM2 (Gestionnaire de processus et surveillance de base)

PM2 n'est pas seulement un gestionnaire de processus pour Node.js, mais aussi un système de surveillance intégré. Il permet de suivre l'état des processus, de les redémarrer en cas de panne et de collecter des métriques de base.



Installation :

npm install pm2 -g


Lancement de l'application avec surveillance :

pm2 start server.js --name "my-app"pm2 monit  # Ouvrir le tableau de bord de surveillance


Exportation des métriques vers Prometheus (via pm2-metrics) :

npm install pm2-metricspm2 start server.js --name "my-app"pm2-metrics --port 9200  # Ouvre le point de terminaison /metrics


3. Clinic.js (Profilage et diagnostic)

Clinic.js est un ensemble d'outils

Recommendations