Contexte

Dans un environnement de production (VMware, stockage SAN, services métiers), j’avais besoin d’une supervision centralisée, temps réel et flexible — sans dépendre d’outils propriétaires coûteux. L’objectif était de compléter ou remplacer partiellement des outils classiques comme Centreon par une stack moderne basée sur Prometheus (collecte métriques) et Grafana (visualisation).


Problème

Les outils traditionnels présentaient plusieurs limites : visibilité réduite sur les métriques fines (CPU steal, IO wait), dashboards peu flexibles, difficulté à corréler infra et applicatif, et coût de licences élevé.

Exemple concret : il était impossible de croiser rapidement la charge CPU d’une VM, la latence datastore et la saturation réseau en un seul endroit.


Solution mise en place

Architecture

1
2
3
4
5
6
7
Serveurs / VM / équipements
Exporters (node_exporter, etc.)
Prometheus (scraping)
Grafana (dashboards)

Installation Prometheus

1
2
3
apt install prometheus -y
systemctl enable prometheus
systemctl start prometheus

Fichier de configuration (/etc/prometheus/prometheus.yml) :

1
2
3
4
scrape_configs:
  - job_name: 'nodes'
    static_configs:
      - targets: ['192.168.1.10:9100', '192.168.1.11:9100']

Installation node_exporter (sur chaque serveur)

1
2
3
apt install prometheus-node-exporter -y
systemctl enable prometheus-node-exporter
systemctl start prometheus-node-exporter

Installation Grafana

1
2
3
apt install -y grafana
systemctl enable grafana-server
systemctl start grafana-server

Ajouter Prometheus comme datasource dans Grafana : URL http://localhost:9090.


Dashboards mis en place

Infrastructure générale

  • CPU (usage, steal, load average)
  • RAM (used / cache / swap)
  • Disque (IOPS, latence, saturation)
  • Réseau (bandwidth, erreurs)

VMware / virtualisation

  • Charge des hôtes ESXi
  • Consommation par VM
  • Contention CPU et RAM

Stockage SAN

  • Latence
  • Débit
  • Saturation des volumes

Résultats

Visibilité : monitoring temps réel, historique exploitable, corrélation rapide lors des incidents.

Gain opérationnel : diagnostic plus rapide, moins d’escalade inutile, meilleure anticipation des saturations.

Flexibilité : ajout de nouvelles métriques en quelques minutes, dashboards personnalisés par usage ou équipe.


Points de vigilance

Stockage Prometheus : les données croissent vite. Définir une politique de rétention dès le départ (--storage.tsdb.retention.time=30d).

Sécurité : les exporters sont souvent exposés sans authentification. Les protéger derrière un firewall ou un reverse proxy avec auth basique.

Charge de scraping : un intervalle trop court génère une charge inutile. Ajuster selon le besoin réel (15s à 60s selon les métriques).


Ce que je referais différemment

  • Configurer la rétention Prometheus dès l’installation
  • Standardiser les dashboards dès le départ plutôt que de les faire évoluer au fil de l’eau
  • Intégrer Alertmanager plus tôt pour les alertes automatiques

Conclusion

La stack Prometheus + Grafana permet de reprendre le contrôle sur la supervision, de gagner en réactivité et d’améliorer la compréhension de l’infrastructure. C’est aujourd’hui une solution de référence pour toute infra moderne, en complément ou en remplacement d’outils traditionnels.


Exemple de requête PromQL — usage CPU

1
100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
flowchart TD subgraph Sources["Sources / Cibles"] FW["FortiGate"] VC1["vCenter1"] VC2["vCenter2"] ESX1["ESXi1"] ESX2["ESXi2"] SNMP["Équipements SNMP"] HTTP["Endpoints HTTP/HTTPS"] APP["Applications (push)"] HOST["Hôte Docker\nNode"] end subgraph Exporters["Exporters & Collecteurs"] FE["fortigate-exporter\n:9710"] VE1["vmware_exporter\n(vcenter1)"] VE2["vmware_exporter\n(vcenter2)"] VEE1["vmware_exporter\n(esxi1)"] VEE2["vmware_exporter\n(esxi2)"] SNMPE["snmp-exporter\n:9116"] BBE["blackbox-exporter\n:9115"] NE["node-exporter\n:9100"] PG["pushgateway\n:9091"] end subgraph Central["Serveur Métriques"] PROM["Prometheus\n:9090"] end subgraph Visual["Visualisation"] GRAF["Grafana\n:3000"] end FW --> FE VC1 --> VE1 VC2 --> VE2 ESX1 --> VEE1 ESX2 --> VEE2 SNMP --> SNMPE HTTP --> BBE HOST --> NE APP --> PG FE -.->|"scrape"| PROM VE1 -.-> PROM VE2 -.-> PROM VEE1 -.-> PROM VEE2 -.-> PROM SNMPE -.-> PROM BBE -.-> PROM NE -.-> PROM PG -.-> PROM PROM --> GRAF
flowchart TD A --> B B --> C