Aller au contenu

Déploiement d'une Solution de Monitoring Centralisée : Prometheus et Grafana

Ce document technique détaille la mise en place d'une infrastructure de surveillance centralisée. Contrairement aux outils d'administration natifs (tels que les vues récapitulatives de Proxmox ou VMware vCenter), cette architecture permet la consolidation de métriques provenant d'environnements hétérogènes (Linux, Windows, Conteneurs), l'historisation à long terme des données et la création de tableaux de bord personnalisés.

1. Prérequis

  • Un hôte Linux avec Docker et Docker Compose installés.
  • Accès réseau entre le serveur de monitoring et les cibles (flux TCP ouverts sur les ports de collecte).
  • Droits d'administration (root ou sudo) sur l'ensemble des machines.

2. Déploiement de l'infrastructure via Docker Compose

Le déploiement s'appuie sur la conteneurisation pour assurer l'isolation des services et la portabilité de la configuration.

2.1 Configuration du fichier de déploiement

Emplacement : /opt/monitoring/docker-compose.yml

YAML
services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    restart: unless-stopped
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus_config:/etc/prometheus
      - prometheus_data:/prometheus

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - grafana_data:/var/lib/grafana

volumes:
  prometheus_data:
  grafana_data:

2.2 Analyse des paramètres techniques

  • Images : Utilisation des versions de production les plus récentes pour bénéficier des derniers correctifs de sécurité.
  • Ports : Le port 9090 est alloué à l'interface de gestion de Prometheus, le port 3000 à celle de Grafana.
  • Persistance (Volumes) :
    • Le dossier local ./prometheus_config est monté dans le conteneur pour injecter la configuration de scraping.
    • Les volumes nommés prometheus_data et grafana_data garantissent l'intégrité des données historiques et des configurations graphiques lors des redémarrages ou mises à jour des conteneurs.

2.3 Accès et découverte des interfaces Web

Aperçu de l'interface d'accueil de Grafana lors de la première connexion sur le port 3000

image.png

Aperçu de l'interface web de Prometheus, accessible sur le port 9090.

image.png


3. Configuration de Prometheus

Prometheus utilise une méthode de collecte par extraction (scraping) à intervalles réguliers.

Emplacement : /opt/monitoring/prometheus_config/prometheus.yml

YAML
global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'prox3-host'
    static_configs:
      - targets: ['192.168.0.30:9100']

  - job_name: 'windows'
    static_configs:
      - targets: ['192.168.0.21:9182']

Note : La section global définit la fréquence de collecte par défaut. La section scrape_configs identifie les cibles spécifiques par leur adresse IP et leur port d'écoute dédié.


4. Installation des agents d'exportation (Exporters)

Chaque machine cible doit exécuter un agent chargé d'exposer les métriques système dans un format lisible par Prometheus.

4.1 Environnement Linux (Proxmox / Debian / Ubuntu)

Installation du service node-exporter pour la collecte des métriques CPU, RAM et I/O.

Bash
apt update && apt install prometheus-node-exporter -y

4.2 Environnement Windows

Installation du service windows-exporter via le gestionnaire de paquets Chocolatey.

PowerShell
# Exécuter dans un terminal PowerShell avec privilèges d'administrateur
choco install prometheus-windows-exporter.install -y

4.3 Validation de l'état des points de collecte (Targets)

Vérification de l'état des endpoints dans l'interface Prometheus via le menu Targets. Les cibles doivent afficher le statut UP en vert pour confirmer la bonne communication.

image.png


5. Configuration de Grafana : Déclaration de la source de données

On se connecte à Grafana et on se rend dans l'onglet Data Sources

image.png

on ajoute Prometheus en tant que nouvelle source de données (Data source) pour relier les deux services.

image.png

Configuration de la source de données : il suffit d'indiquer l'URL de connexion pointant vers le conteneur Prometheus.

image.png

Une fois la connexion établie entre Grafana et Prometheus (en tant que Datasource), l'importation de tableaux de bord préconfigurés est recommandée.

5.1 Identifiants de Dashboards recommandés

  • Linux (Node Exporter Full) : ID 1860
  • Windows (Windows Exporter Dashboard) : ID 14694

On les retrouve via le lien suivant https://grafana.com/grafana/dashboards/

5.2 Résolution des anomalies d'affichage

  • Absence de données (No Data) : Vérifier que la variable Instance ou Server en haut à gauche du dashboard pointe vers la cible correcte.
  • Erreur de variable ${DS_PROMETHEUS} : Accéder aux paramètres du tableau de bord (Dashboard Settings), section Variables, et s'assurer que le type Datasource est correctement lié à votre instance Prometheus.

6. Maintenance et Administration

6.1 Gestion du cycle de vie des conteneurs

Lancement initial ou application de modifications structurelles :

Bash
docker compose up -d

Prise en compte d'une modification du fichier prometheus.yml :

Bash
docker restart prometheus

6.2 Phase de vérification

Il est impératif de valider l'état de santé des points de collecte en accédant à l'interface de Prometheus à l'adresse suivante : http://<IP_SERVEUR>:9090/targets. Les cibles doivent présenter le statut UP (indiqué en vert).