observabilité Prometheus et Grafana pour votre SaaS Node.js : guide d’implémentation avancé
03/08/2025
Dans un contexte SaaS, garantir la performance et la disponibilité de votre application Node.js est essentiel pour satisfaire vos utilisateurs et réduire les incidents. Ce guide vous accompagne, pas à pas, dans la mise en place d’une observabilité complète à l’aide de Prometheus, Grafana et Alertmanager.
1. Instrumentation de votre application avec prom-client
Commencez par exposer des métriques custom et standards (HTTP, mémoire, CPU) grâce au package prom-client.
npm install prom-client express
const express = require('express');
const client = require('prom-client');
const app = express();
// Collecte automatique des métriques Node.js
client.collectDefaultMetrics();
// Compteur d’appels HTTP
const httpCounter = new client.Counter({
name: 'http_requests_total',
help: 'Nombre total de requêtes HTTP',
labelNames: ['method','route','statusCode']
});
app.use((req, res, next) => {
res.on('finish', () => {
httpCounter.labels(req.method, req.path, res.statusCode).inc();
});
next();
});
app.get('/metrics', (req, res) => {
res.set('Content-Type', client.register.contentType);
res.end(client.register.metrics());
});
app.listen(3000, () => console.log('App instrumentée sur :3000'));
2. Déploiement de Prometheus
Utilisez Docker pour tester rapidement :
docker run -d \
--name prometheus \
-p 9090:9090 \
-v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml \
prom/prometheus:latest
prometheus.yml minimal
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'nodejs-saas'
static_configs:
- targets: ['host.docker.internal:3000']
3. Visualisation avec Grafana
Lancez Grafana :
docker run -d \
--name grafana \
-p 3001:3000 \
grafana/grafana:latest
- Connectez-vous sur
http://localhost:3001
(admin/admin). - Ajoutez Prometheus comme Data Source (URL :
http://prometheus:9090
). - Importez un dashboard Node.js (ID : 1860 sur Grafana Labs).
4. Alerting avec Alertmanager
Configurez Prometheus pour envoyer les alertes :
alerting:
alertmanagers:
- static_configs:
- targets: ['alertmanager:9093']
rule_files:
- 'alerts.yml'
alerts.yml exemple
groups:
- name: nodejs-saas
rules:
- alert: HighMemoryUsage
expr: process_resident_memory_bytes > 500000000
for: 2m
labels:
severity: warning
annotations:
summary: "Utilisation mémoire > 500MB"
Déployez Alertmanager :
docker run -d \
--name alertmanager \
-p 9093:9093 \
-v $(pwd)/alertmanager.yml:/etc/alertmanager/alertmanager.yml \
prom/alertmanager
5. Bonnes pratiques et sécurisation
- Authentification & TLS : placez Grafana et Prometheus derrière un reverse proxy (Nginx, NGINX) avec certificats Let’s Encrypt.
- Séparation des rôles : isolez la base de données de metrics et limitez l’accès par réseau (VPC, AWS Security Groups).
- Rétention & compression : ajustez
--storage.tsdb.retention.time
pour maîtriser les coûts de stockage. - Tests de charge : validez que vos métriques ne perturbent pas la production (maxBufferSize, batchSize).
Conclusion
En quelques étapes, vous disposez désormais d’une plateforme d’observabilité robuste pour surveiller la santé et la performance de votre SaaS Node.js. Vous pourrez anticiper les incidents, optimiser vos ressources et garantir une expérience utilisateur fluide.
Pour bénéficier d’un accompagnement sur mesure dans l’implémentation de cette stack, découvrez nos services SaaS et contactez notre équipe.