MES TUTOS
VEILLE
Chargement de la veille...
MONITORING

La Stack Ultime : Grafana + Prometheus + Node Exporter

Grafana est la plus belle interface de monitoring du marché. Mais Grafana est "bête" : il ne stocke rien, il ne fait qu'afficher. Pour avoir des courbes, nous avons besoin d'une Time Series Database (TSDB). Le standard de l'industrie est Prometheus. Voici comment déployer cette stack complète via Docker Compose.

1. L'Architecture (Qui fait quoi ?)


2. Préparation (Config Prometheus)

Avant de lancer Docker, il faut dire à Prometheus qui il doit surveiller. Créez un dossier monitoring et un fichier prometheus.yml :

global:
  scrape_interval: 15s # On récupère les données toutes les 15s

scrape_configs:
  - job_name: 'mon_vps'
    static_configs:
      - targets: ['node-exporter:9100'] # Nom du service Docker ci-dessous

3. Le Docker Compose (La Stack)

Créez le fichier docker-compose.yml dans le même dossier :

version: '3.8'

services:
  # 1. L'Agent (Récupère les infos du serveur hôte)
  node-exporter:
    image: prom/node-exporter:latest
    container_name: node_exporter
    restart: unless-stopped
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.rootfs=/rootfs'
      - '--path.sysfs=/host/sys'
      - '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
    networks:
      - monitor-net

  # 2. La Base de données (Stocke l'historique)
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    restart: unless-stopped
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    command:
      - '--config.file=/etc/prometheus/prometheus.yml'
      - '--storage.tsdb.retention.time=15d' # Garde 15 jours d'historique
    ports:
      - 9090:9090
    networks:
      - monitor-net

  # 3. L'Interface (Affiche les courbes)
  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    restart: unless-stopped
    user: "472" # ID utilisateur spécifique à Grafana (voir note plus bas)
    volumes:
      - grafana_data:/var/lib/grafana
    ports:
      - 3000:3000
    networks:
      - monitor-net

volumes:
  prometheus_data:
  grafana_data:

networks:
  monitor-net:
    driver: bridge
⚠️ Le piège des permissions (User 472) :
L'image Docker officielle de Grafana tourne avec l'utilisateur ID 472. Si vous créez le volume grafana_data sur l'hôte, il appartient souvent à Root, et Grafana crashe au démarrage ("Permission Denied").
Solution : Laissez Docker gérer le volume nommé (comme fait ci-dessus) OU faites un chown 472:472 sur votre dossier mappé.

Lancez la stack : docker compose up -d.


4. Configuration de Grafana

Rendez-vous sur http://VOTRE_IP:3000. Login par défaut : admin / admin.

A. Ajouter la Source de Données (Datasource)

  1. Allez dans Connections > Data Sources.
  2. Cliquez sur Add data source et choisissez Prometheus.
  3. Dans l'URL, mettez : http://prometheus:9090 (C'est le nom du conteneur dans le réseau Docker).
  4. Cliquez sur "Save & Test".

B. Importer un Dashboard (Ne réinventez pas la roue)

Créer des graphiques à la main est long. Utilisons les modèles de la communauté.

  1. Allez dans Dashboards > Import.
  2. Dans le champ "Import via grafana.com", entrez l'ID : 1860.
  3. C'est le dashboard "Node Exporter Full" (le plus complet).
  4. Sélectionnez votre source Prometheus et validez.

Boom ! Vous avez instantanément des graphiques professionnels sur l'usage CPU, RAM, Disque et Réseau.


5. Alerting (Être notifié)

Avoir de beaux graphiques ne suffit pas. Configurez une alerte simple :

  1. Editez le panneau "CPU Usage".
  2. Allez dans l'onglet Alert.
  3. Condition : WHEN avg() OF query(A, 5m, now) IS ABOVE 90.
  4. Configurez un "Contact Point" (Email, Slack, Discord).

Conclusion

Contrairement à Netdata (Temps réel, 1 seconde), Grafana est fait pour l'analyse long terme et la corrélation de données. C'est l'outil indispensable pour comprendre "Pourquoi mon serveur a planté mardi dernier à 3h du matin ?".

← Retour à la bibliothèque