• 1. monitoring temps réel de microservices node.js avec prometheus et grafana

  • 1.1. prérequis

  • 1.2. instrumenter votre application node.js

  • 1.3. préparation de la stack docker-compose

  • 1.4. déploiement et configuration de grafana

  • 1.5. exemples de métriques et alerting

  • 1.6. bonnes pratiques

  • 1.7. conclusion

monitoring temps réel de microservices node.js avec prometheus et grafana : guide complet

Image de monitoring temps réel de microservices node.js avec prometheus et grafana : guide complet

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

  1. Lancez la stack : docker-compose up -d.
  2. Accédez à Grafana (http://localhost:3000) et créez une source de données Prometheus pointant sur http://prometheus:9090.
  3. 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 :

AlerteExpressionSeuil
HighLatency histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le)) > 1 > 1 seconde

bonnes pratiques

  • Exposer uniquement /metrics via 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.

Image de 5 cafés et espaces de coworking à lyon pour coder en toute tranquillité

5 cafés et espaces de coworking à lyon pour coder en toute tranquillité

Découvrez 5 cafés et espaces de coworking à Lyon où wifi rapide, déco cosy et networking vont booster votre créativité en toute sérénité.
Image de Hugging Face Volta : nouvelle base de données vectorielle open-source pour l’IA en entreprise

Hugging Face Volta : nouvelle base de données vectorielle open-source pour l’IA en entreprise

Explorez Volta, la base vectorielle open source de Hugging Face offrant latence milliseconde, scalabilité et intégration simplifiée pour vos projets IA.
Image de optimiser les performances d’une api python avec fastapi et uvicorn : guide complet

optimiser les performances d’une api python avec fastapi et uvicorn : guide complet

Apprenez à optimiser votre API Python avec FastAPI et Uvicorn, du benchmark à la mise en production, pour atteindre des milliers de requêtes par seconde.
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