monitoring temps réel de microservices node.js avec prometheus et grafana : guide complet
17/11/2025
monitoring temps réel de microservices node.js avec prometheus et grafana
Dans un environnement microservices, assurer la disponibilité et la performance de chaque service Node.js est crucial. Ce guide technique vous explique comment instrumenter une application, collecter des métriques avec Prometheus et visualiser vos tableaux de bord dans Grafana, le tout conteneurisé avec Docker.
prérequis
- Avoir déjà un microservice Node.js exposant une API HTTP.
- Docker & Docker Compose installés.
- Connaissance de base des fichiers YAML.
1. instrumenter votre application node.js
Installez le client Prometheus :
npm install prom-client express
Puis ajoutez dans votre code :
const express = require('express');
const client = require('prom-client');
const register = client.register;
const app = express();
// Création d'un histogramme de durée
const httpRequestDuration = new client.Histogram({
name: 'http_request_duration_seconds',
help: 'Durée des requêtes HTTP en secondes',
labelNames: ['method', 'route', 'status_code'],
buckets: [0.1, 0.5, 1, 2, 5]
});
app.use((req, res, next) => {
const end = httpRequestDuration.startTimer({ method: req.method, route: req.path });
res.on('finish', () => {
end({ status_code: res.statusCode });
});
next();
});
// Endpoint /metrics
app.get('/metrics', async (req, res) => {
res.set('Content-Type', register.contentType);
res.end(await register.metrics());
});
app.listen(3000, () => console.log('Service Node.js démarré sur le port 3000'));
2. préparation de la stack docker-compose
Créez un fichier docker-compose.yml à la racine :
version: '3.8'
services:
prometheus:
image: prom/prometheus:v2.45.0
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
ports:
- "9090:9090"
grafana:
image: grafana/grafana:10.5.0
ports:
- "3000:3000"
app:
build: .
ports:
- "3000:3000"
depends_on:
- prometheus
Le fichier prometheus.yml minimal :
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'nodejs-app'
metrics_path: /metrics
static_configs:
- targets: ['app:3000']
3. déploiement et configuration de grafana
- Lancez la stack :
docker-compose up -d. - Accédez à Grafana (http://localhost:3000) et créez une source de données Prometheus pointant sur
http://prometheus:9090. - Importez un dashboard communautaire pour Node.js (ID : 1860) et ajustez les variables si besoin.
4. exemples de métriques et alerting
Visualisez en temps réel :
- Latence 95e percentile (
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le))). - Nombre de requêtes par seconde (
sum(rate(http_requests_total[1m]))).
Exemple de règle d’alerte Prometheus :
| Alerte | Expression | Seuil |
|---|---|---|
| HighLatency | histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le)) > 1 |
> 1 seconde |
bonnes pratiques
- Exposer uniquement
/metricsvia un réseau interne ou un reverse proxy sécurisé. - Taguer vos métriques par environnement (
env="prod",env="staging"). - Mettre en place Alertmanager pour gérer les notifications (Slack, e-mail).
- Consommer peu de ressources : privilégiez des buckets de latence adaptés à votre SLA.
conclusion
Avec Prometheus et Grafana, vous gagnez une visibilité fine sur vos microservices Node.js, vous anticipez les incidents et optimisez les performances en continu. Pour aller plus loin ou bénéficier d’un accompagnement sur-mesure pour vos applications web, n’hésitez pas à nous contacter.

