• 1. Pourquoi superviser des microservices Node.js avec Prometheus et Grafana ?

  • 2. Prérequis

  • 3. Instrumenter le microservice Node.js

  • 3.1. 1 Installer la bibliothèque prom-client

  • 3.2. 2 Exposer l’endpoint /metrics

  • 4. Packager et déployer avec Docker Compose

  • 4.1. 1 Configuration de Prometheus (prometheus.yml)

  • 5. Créer un dashboard Grafana

  • 6. Bonnes pratiques de supervision

  • 7. Conclusion

superviser des microservices node.js avec prometheus et grafana : guide technique complet

Image de superviser des microservices node.js avec prometheus et grafana : guide technique complet

Pourquoi superviser des microservices Node.js avec Prometheus et Grafana ?

Dans un environnement distribué, assurer la disponibilité et la performance de chaque service est crucial. Prometheus collecte des métriques et Grafana les affiche sous forme de tableaux de bord interactifs. Ce guide technique vous accompagne, pas à pas, pour instrumenter un microservice Node.js, le déployer en conteneur Docker et visualiser ses indicateurs clés.

Prérequis

  1. Un microservice Node.js (v14+).
  2. Docker et Docker Compose installés.
  3. Accès à un serveur ou cluster (Kubernetes ou VM).
  4. Prometheus v2.40+ et Grafana v9+.

1. Instrumenter le microservice Node.js

1.1 Installer la bibliothèque prom-client

npm install prom-client --save

1.2 Exposer l’endpoint /metrics

const express = require('express');  
const client = require('prom-client');  
const app = express();  
// Créer un collecteur système  
client.collectDefaultMetrics({ prefix: 'service_' });  

// Exemple de compteur personnalisé  
const httpRequests = new client.Counter({  
  name: 'service_http_requests_total',  
  help: 'Nombre total de requêtes HTTP',  
  labelNames: ['method', 'route', 'status']  
});  

app.use((req, res, next) => {  
  res.on('finish', () => {  
    httpRequests.inc({  
      method: req.method,  
      route: req.path,  
      status: 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 port 3000'));  

2. Packager et déployer avec Docker Compose

version: '3.8'  
services:  
  app:  
    build: .  
    ports:  
      - "3000:3000"  
  prometheus:  
    image: prom/prometheus:v2.40.0  
    volumes:  
      - ./prometheus.yml:/etc/prometheus/prometheus.yml  
    ports:  
      - "9090:9090"  
  grafana:  
    image: grafana/grafana:9.5.0  
    ports:  
      - "3001:3000"  

2.1 Configuration de Prometheus (prometheus.yml)

global:  
  scrape_interval: 15s  

scrape_configs:  
  - job_name: 'node_microservice'  
    metrics_path: /metrics  
    static_configs:  
      - targets: ['app:3000']  

3. Créer un dashboard Grafana

  1. Lancer Grafana à http://localhost:3001, puis Data Sources → Add → Prometheus (URL : http://prometheus:9090).
  2. Importer un JSON de dashboard (ex. community dashboard n°1860 pour Node.js).
  3. Adapter les panels : CPU, mémoire, latence des requêtes HTTP.

4. Bonnes pratiques de supervision

  • Limiter la cardinalité des labels (éviter trop de routes dynamiques).
  • Configurer des alertes dans Prometheus (ex. latence > 500 ms).
  • Stocker les données à long terme via un remote storage si besoin.
  • Automatiser le déploiement avec CI/CD (GitLab CI, Jenkins).

Conclusion

En suivant ce guide, vous disposez d’une supervision robuste pour détecter rapidement anomalies et goulots d’étranglement dans vos microservices Node.js. Vous pouvez étendre cette approche à d’autres technologies, comme AWS ou Kubernetes, pour un monitoring complet de votre infrastructure.

Envie d’aller plus loin et de garantir la fiabilité de votre architecture distribuée ? Contactez notre équipe pour un audit ou une mise en place sur mesure.

Image de l’incroyable ascension d’aws : de la librairie interne au géant du cloud

l’incroyable ascension d’aws : de la librairie interne au géant du cloud

Découvrez l’ascension d’AWS, passé d’un projet interne à un géant du cloud, avec ses clés d’innovation, scalabilité et automatisation pour vos projets.
Image de kubernetes 1.28 : nouveautés clés et améliorations pour l’orchestration de conteneurs

kubernetes 1.28 : nouveautés clés et améliorations pour l’orchestration de conteneurs

Découvrez Kubernetes 1.28 avec PodSecurity Admission GA, containers éphémères, CronJob v1 et TopologyManager stable pour sécuriser et optimiser vos clusters.
Image de comment un erp saas sur-mesure optimise la gestion des stocks et réduit les coûts logistiques en pme

comment un erp saas sur-mesure optimise la gestion des stocks et réduit les coûts logistiques en pme

Apprenez comment un ERP SaaS sur mesure automatise la gestion des stocks et réduit les coûts logistiques pour booster l’agilité de votre PME
DEVIS GRATUIT

Un projet en tête ? Vous avez des questions ?

Contactez nous pour recevoir un devis gratuitement, des réponses à vos questions ou une séance de consulting offerte avec l'un de nos experts :

Nous contacter