implémenter le monitoring de votre saas node.js avec prometheus et grafana
13/07/2025
Dans un environnement SaaS, garantir la disponibilité et la performance de votre application Node.js est crucial. Le monitoring basé sur Prometheus et Grafana vous permet de collecter, visualiser et alerter sur des métriques clés. Ce tutoriel technique détaille chaque étape pour mettre en place un système de surveillance robuste et extensible.
monitoring saas node.js prometheus grafana : prérequis et technologies
- Node.js (≥ v14)
- Prometheus v2.x
- Grafana v9.x
- Docker & Docker Compose
- Bibliothèque
prom-client
pour Node.js
1. instrumenter votre application Node.js
Commencez par installer prom-client
dans votre projet :
npm install prom-client
Puis, exposez un endpoint /metrics
:
const express = require('express');
const client = require('prom-client');
const app = express();
// Collecte par défaut : CPU, mémoire, event loop
client.collectDefaultMetrics();
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 metrics on http://localhost:3000/metrics'));
Vérifiez localement :
curl http://localhost:3000/metrics
2. déployer Prometheus avec Docker Compose
Créez un fichier docker-compose.yml
:
version: '3.8'
services:
prometheus:
image: prom/prometheus:v2.41.0
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
grafana:
image: grafana/grafana:9.5.0
ports:
- "3001:3000"
Dans prometheus.yml
, ajoutez votre cible :
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'saas-nodejs'
static_configs:
- targets: ['host.docker.internal:3000']
Lancez :
docker-compose up -d
Prometheus est disponible sur http://localhost:9090.
3. configurer Grafana et créer un dashboard
- Accédez à Grafana (http://localhost:3001), identifiant par défaut « admin/admin ».
- Ajoutez Prometheus comme source de données (URL:
http://prometheus:9090
). - Importez un dashboard template, par exemple ID 1860 pour Node.js metrics.
Vous obtiendrez des graphiques CPU, heap, active handles…
4. bonnes pratiques et sécurité
- Cardinalité : limitez le nombre de labels dynamiques (
status_code
,instance
), sinon Prometheus explosera en mémoire. - Retention : ajustez
--storage.tsdb.retention.time=15d
pour 15 jours. - Alerting : configurez Alertmanager pour être notifié par email ou via Slack.
- Sécurisez vos endpoints : placez Prometheus et Grafana derrière un proxy NGINX avec authentification HTTP.
Exemple de configuration NGINX pour Grafana
server {
listen 80;
server_name grafana.mondomaine.com;
auth_basic "Accès restreint";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://localhost:3001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Conclusion et perspectives
En quelques étapes, vous avez mis en place un monitoring fiable pour votre SaaS Node.js. Cette base peut évoluer vers du tracing (OpenTelemetry) ou des logs centralisés (ELK). Pour aller plus loin et discuter de la mise en œuvre chez vous, contactez nos experts SaaS ou demandez une démo.
« Vous ne pouvez pas améliorer ce que vous ne mesurez pas. »