mettre en place un monitoring node.js avec prometheus et grafana
08/12/2025
Dans cet article, nous expliquons comment ajouter un système de monitoring robuste à votre application Node.js en utilisant Prometheus et Grafana. Vous découvrirez pas à pas l’instrumentation du code, la configuration des services et la mise en place d’alertes pour garantir la performance et la fiabilité de votre API.
pourquoi choisir prometheus et grafana pour le monitoring de node.js
Prometheus (v2.45) est une solution open source de collecte de métriques, idéale pour surveiller l’état de vos services. Grafana (v10) apporte une couche de visualisation puissante, avec des dashboards personnalisables et un système d’alerting intégré. Ensemble, ils forment une stack légère, scalable et facile à intégrer à toute application Node.js.
étapes pour intégrer prometheus à votre application node.js
- Installer le client Prometheus
npm install prom-clientCe module expose des métriques sur un endpoint HTTP.
- Instrumenter le code
const client = require('prom-client'); const express = require('express'); const app = express(); const collectDefaultMetrics = client.collectDefaultMetrics; // Démarre la collecte des métriques système collectDefaultMetrics({ timeout: 5000 }); // Expose les métriques sur /metrics app.get('/metrics', async (req, res) => { res.set('Content-Type', client.register.contentType); res.end(await client.register.metrics()); });Vous pouvez ajouter des compteurs et histogrammes :
const httpRequestDurationMicroseconds = new client.Histogram({ name: 'http_request_duration_ms', help: 'Duration of HTTP requests in ms', labelNames: ['method', 'route', 'status_code'], buckets: [50, 100, 200, 500, 1000] }); // Dans votre middleware app.use((req, res, next) => { const end = httpRequestDurationMicroseconds.startTimer(); res.on('finish', () => { end({ method: req.method, route: req.path, status_code: res.statusCode }); }); next(); }); - Configurer Prometheus
global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'nodejs_app' static_configs: - targets: ['localhost:3000']Lancez Prometheus :
docker run -d \ -p 9090:9090 \ -v ./prometheus.yml:/etc/prometheus/prometheus.yml \ prom/prometheus:latest - Déployer Grafana et importer un dashboard
docker run -d \ -p 3000:3000 \ grafana/grafana:latest- Connectez Grafana à Prometheus (http://localhost:9090).
- Importez un dashboard Node.js depuis la galerie ou créez-en un personnalisé.
- Mettre en place Alertmanager
Créez un fichier
alerts.yml:groups: - name: nodejs_alerts rules: - alert: HighErrorRate expr: increase(http_requests_total{status_code=~"5.."}[5m]) > 5 for: 2m labels: severity: critical annotations: summary: "Taux d'erreur HTTP élevé sur Node.js"Lancez Alertmanager :
docker run -d \ -p 9093:9093 \ -v $(pwd)/alerts.yml:/etc/alertmanager/alertmanager.yml \ prom/alertmanager
bonnes pratiques et optimisation
- Séparation des environnements : n’utilisez pas la même base de données de métriques pour dev/prod.
- Retention : ajustez la durée de conservation (retention) selon vos besoins (ex. 30 jours pour la prod).
- Filtrage : limitez le nombre de labels pour réduire le cardinality explosion.
- Sécurité : placez Prometheus et Grafana derrière un reverse-proxy (ex. Nginx) et activez TLS/SSL.
- Scalabilité : pour de très gros volumes, envisagez Cortex ou Thanos en complément de Prometheus.
conclusion
Grâce à cette stack Prometheus + Grafana, vous obtenez une vue en temps réel des performances de votre application Node.js, des alertes proactives et une meilleure maîtrise de votre SLA. Vous pourrez ainsi anticiper les incidents et optimiser vos ressources.
Pour aller plus loin et externaliser la mise en place ou l’infogérance, découvrez nos offres d’augmentation d’effectif technique ou contactez-nous via notre page de contact.
Besoin d’un tableau de bord personnalisé ? Demandez un audit gratuit et bénéficiez d’un accompagnement sur mesure.

