monitoring prometheus grafana pour microservices node.js : guide complet
15/10/2025
Pour garantir la stabilité et la performance de vos microservices Node.js, un système de monitoring est indispensable. Dans ce guide technique, nous verrons comment :
- Instrumenter votre application avec
prom-client. - Configurer Prometheus pour collecter les métriques.
- Déployer une stack Docker Compose incluant Grafana.
- Créer un dashboard Grafana pour visualiser les indicateurs clés.
prérequis et architecture
stack logicielle
- Node.js ≥16
- Prometheus v2.45
- Grafana v10
- Docker & Docker Compose
outils recommandés
- Node.js et Docker
- kubectl + Kubernetes (facultatif pour déploiement en prod)
1. instrumenter l’application node.js
Dans votre service, ajoutez prom-client pour exposer un endpoint /metrics :
npm install prom-client
// metrics.js
const client = require('prom-client');
const collectDefault = client.collectDefaultMetrics;
collectDefault({ timeout: 5000 });
const httpRequestDuration = new client.Histogram({
name: 'http_request_duration_seconds',
help: 'Durée des requêtes HTTP',
labelNames: ['method', 'route', 'status_code'],
buckets: [0.1, 0.5, 1, 2.5, 5]
});
module.exports = { client, httpRequestDuration };
-- server.js
const express = require('express');
const { client, httpRequestDuration } = require('./metrics');
const app = express();
app.use((req, res, next) => {
const end = httpRequestDuration.startTimer();
res.on('finish', () => {
end({ method: req.method, route: req.path, status_code: res.statusCode });
});
next();
});
app.get('/metrics', async (req, res) => {
res.set('Content-Type', client.register.contentType);
res.end(await client.register.metrics());
});
app.listen(3000, () => console.log('Service démarré sur :3000'));
tip
- Ne pas trop multiplier les métriques pour éviter la haute cardinalité.
2. configurer prometheus
Créez un fichier prometheus.yml :
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'node_microservice'
metrics_path: /metrics
static_configs:
- targets: ['service-node:3000']
3. déployer avec docker-compose
version: '3.8'
services:
service-node:
build: .
ports:
- "3000:3000"
prometheus:
image: prom/prometheus:v2.45.0
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
grafana:
image: grafana/grafana:10.0.0
ports:
- "3001:3000"
depends_on:
- prometheus
Lancez docker-compose up -d puis vérifiez l’accès :
- Prometheus → http://localhost:9090
- Grafana → http://localhost:3001 (login/admin)
4. créer un dashboard grafana
- Ajoutez Prometheus comme source de données (
http://prometheus:9090). - Importez un dashboard JSON ou créez-en un nouveau.
Exemple de requête PromQL pour la latence moyenne : histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))
bonnes pratiques
- Définir des alertes dans Prometheus (CPU >80 %, erreurs 5xx supérieures à 1 %).
- Archiver les métriques anciennes pour conserver un historique raisonnable.
- Surveiller également les ressources Docker/Kubernetes (via Prometheus Operator).
- Versionnez vos dashboards Grafana dans Git pour suivre l’évolution.
conclusion
Un monitoring robuste avec Prometheus et Grafana vous permet d’anticiper les incidents et d’optimiser vos microservices Node.js. Pour un audit complet de votre architecture ou une formation dédiée, contactez l’équipe Novane.
IMAGE_TAGS : monitoring, metrics

