• 1. monitorer une application node.js avec prometheus et grafana

  • 2. Instrumenter votre application Node.js

  • 3. Déployer Prometheus et Grafana avec Docker

  • 4. Configurer Prometheus

  • 5. Ajouter Grafana et créer un dashboard

  • 6. Bonnes pratiques et alerting

  • 7. Conclusion

monitorer une application node.js avec prometheus et grafana : guide complet

Image de monitorer une application node.js avec prometheus et grafana : guide complet

Dans un environnement de production, garantir la stabilité et la performance de votre service Node.js est crucial. Grâce à Prometheus pour la collecte de métriques et Grafana pour la visualisation, vous disposerez d’une observabilité complète. Ce guide technique détaille chaque étape pour monitorer une application Node.js avec Prometheus et Grafana.

monitorer une application node.js avec prometheus et grafana

Prometheus (v2.40) est un système open-source de collecte de métriques time-series. Grafana (v10.1) se connecte à ces données et propose des tableaux de bord personnalisés. Ensemble, ils forment une chaîne de monitoring puissante pour anticiper les anomalies et améliorer le SLA de vos APIs.

1. Instrumenter votre application Node.js

Commencez par exposer des métriques métier et système :

  1. Installez le client Prometheus :
npm install prom-client --save
  1. Ajoutez un middleware pour exposer l’endpoint /metrics :
const express = require('express');
const client = require('prom-client');

const app = express();
const collectDefaultMetrics = client.collectDefaultMetrics;
collectDefaultMetrics({ timeout: 5000 });

const httpRequestDurationMicroseconds = new client.Histogram({
  name: 'http_request_duration_ms',
  help: 'Duration of HTTP requests in ms',
  labelNames: ['method', 'route', 'status_code'],
  buckets: [50, 100, 200, 500, 1000]
});

app.use((req, res, next) => {
  const end = httpRequestDurationMicroseconds.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('API démarrée sur port 3000'));

2. Déployer Prometheus et Grafana avec Docker

Le plus simple est d’utiliser Docker et un docker-compose.yml :

version: '3.8'
services:
  prometheus:
    image: prom/prometheus:v2.40.0
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
    ports:
      - 9090:9090

  grafana:
    image: grafana/grafana:10.1.0
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=admin
    ports:
      - 3001:3000

Placez ensuite ce fichier à la racine de votre projet et lancez docker-compose up -d.

3. Configurer Prometheus

Le fichier prometheus.yml doit contenir votre cible Node.js :

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'nodejs-app'
    static_configs:
      - targets: ['host.docker.internal:3000']

Cette configuration indique à Prometheus de scruter l’endpoint /metrics toutes les 15 secondes.

4. Ajouter Grafana et créer un dashboard

Accédez à Grafana sur localhost:3001 (login admin/admin). Ajoutez Prometheus comme « Data Source » (URL : http://prometheus:9090). Puis, créez un nouveau dashboard :

  • Graph pour http_request_duration_ms_bucket.
  • Stat pour process_cpu_user_seconds_total et process_resident_memory_bytes.

Vous pouvez importer des templates officiels sur Grafana Labs pour gagner du temps.

5. Bonnes pratiques et alerting

  • Utilisez des labels cohérents pour filtrer par service, environnement ou équipe.
  • Définissez des histogrammes et summaries pour les temps de réponse et la latence.
  • Conservez les données au minimum 15 jours pour les analyses post-mortem.
  • Mettez en place des règles d’alerting dans Prometheus (ex. erreurs > 5% ou latence p99 > 500 ms).
  • Intégrez vos alertes à un canal Slack ou PagerDuty pour réagir rapidement.

Conclusion

En quelques étapes, vous disposez d’une solution de monitoring robuste pour votre API Node.js. Vous anticipez les régressions de performance et optimisez votre SLA. Pour aller plus loin dans l’optimisation et la mise en place d’un observability shop, profitez d’une séance de consulting IT offerte ou découvrez nos réalisations.

Image de Slack vs Teams vs Google Chat : lequel choisir en 2025 ?

Slack vs Teams vs Google Chat : lequel choisir en 2025 ?

Découvrez notre comparatif complet de Slack, Teams et Google Chat pour 2025 : tarifs, intégrations, ergonomie et fonctionnalités pour choisir l’outil idéal.
Image de Microsoft intègre Copilot IA à Dynamics 365 et Power Platform : quels gains pour votre CRM et ERP ?

Microsoft intègre Copilot IA à Dynamics 365 et Power Platform : quels gains pour votre CRM et ERP ?

Découvrez comment Copilot IA dans Dynamics 365 et Power Platform révolutionne CRM et ERP avec automatisation, insights prédictifs et gains de productivité.
Image de mise en place d’une pipeline ci/cd pour une application node.js avec github actions et docker

mise en place d’une pipeline ci/cd pour une application node.js avec github actions et docker

Découvrez comment configurer pas à pas une pipeline CI/CD avec GitHub Actions et Docker pour automatiser tests, builds et déploiements d’une app Node.js.
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 :

Femme en chemise jaune