guide technique : monitoring de performance de votre application saas node.js avec prometheus et grafana
16/06/2025
Introduction
Pour garantir la fiabilité et l’évolutivité de votre application SaaS développée en Node.js, un système de monitoring robuste est indispensable. Prometheus et Grafana, deux solutions open-source largement adoptées, offrent une observabilité complète : collecte de métriques, visualisation en temps réel et alerting.
Étape 1 : Instrumentation de votre application Node.js
La première étape consiste à exposer des métriques HTTP via la bibliothèque prom-client.
- Installez le client Prometheus :
npm install prom-client --save
- Ajoutez ce code dans votre serveur Express :
const express = require('express'); const client = require('prom-client'); const app = express(); // registre par défaut const collectDefaultMetrics = client.collectDefaultMetrics; collectDefaultMetrics({ timeout: 5000 }); // compteur personnalisé const httpRequestCounter = new client.Counter({ name: 'http_requests_total', help: 'Total des requêtes HTTP reçues' }); app.use((req, res, next) => { httpRequestCounter.inc(); next(); }); // endpoint pour Prometheus app.get('/metrics', async (req, res) => { res.set('Content-Type', client.register.contentType); res.end(await client.register.metrics()); }); app.listen(3000, () => console.log('App démarrée sur le port 3000'));
Étape 2 : Déploiement de Prometheus et Grafana avec Docker
Utilisez Docker pour lancer rapidement votre stack de monitoring.
Fichier docker-compose.yml
version: '3.8'
services:
prometheus:
image: prom/prometheus:v2.44.0
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
grafana:
image: grafana/grafana:9.5.1
environment:
- GF_SECURITY_ADMIN_PASSWORD=novane123
ports:
- "3001:3000"
Étape 3 : Configuration de Prometheus et création de dashboards
Modifiez prometheus.yml
pour cibler votre application Node.js :
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'nodejs-app'
metrics_path: '/metrics'
static_configs:
- targets: ['host.docker.internal:3000']
Dans Grafana, importez un dashboard communautaire pour Node.js ou créez vos propres panels :
- Répartition des codes de réponse (2xx, 4xx, 5xx)
- Temps de réponse moyen et percentiles (p95, p99)
- Utilisation CPU/Mémoire de votre service
Bonnes pratiques
- Séparation des environnements : test, staging, production disposent de champs “job_name” différents.
- Alerting : configurez
alertmanager
pour envoyer des notifications Slack ou e-mail dès qu’une métrique dépasse un seuil critique (erreurs > 5% ou latence p95 > 500 ms). - Persistance des données : montez un volume Docker pour conserver l’historique des séries temporelles.
- Optimisation : limitez le nombre de métriques custom à celles qui apportent une réelle valeur métier pour éviter la surcharge.
Conclusion
En moins d’une heure, vous avez mis en place un monitoring performant pour votre application SaaS Node.js, avec une visibilité en temps réel et des alertes proactives. Vous pouvez ainsi réduire de 30 % le temps de rétablissement en cas d’incident et optimiser la capacité de votre infrastructure.
Pour aller plus loin ou bénéficier d’une séance de consulting offerte, n’hésitez pas à nous contacter.