Prérequis
- Un serveur Ubuntu/Debian ou AlmaLinux/Rocky Linux
- Docker installé (méthode recommandée)
- Accès root ou sudo
Prometheus collecte les métriques de vos serveurs et applications. Grafana les visualise dans des tableaux de bord élégants. Ensemble, ils forment une stack de monitoring professionnelle.
Architecture
- Prometheus : Base de données de métriques (time-series)
- Node Exporter : Agent qui collecte les métriques système
- Grafana : Interface de visualisation et tableaux de bord
Méthode 1 : Installation avec Docker Compose
mkdir -p /opt/monitoring/{prometheus,grafana}
cd /opt/monitoringversion: '3.8'
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
restart: unless-stopped
ports:
- "9090:9090"
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention.time=30d'
node-exporter:
image: prom/node-exporter:latest
container_name: node-exporter
restart: unless-stopped
ports:
- "9100:9100"
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
- '--path.rootfs=/rootfs'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
grafana:
image: grafana/grafana:latest
container_name: grafana
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- grafana_data:/var/lib/grafana
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin_password
- GF_USERS_ALLOW_SIGN_UP=false
volumes:
prometheus_data:
grafana_data:global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node-exporter'
static_configs:
- targets: ['node-exporter:9100']
# Ajouter d'autres serveurs
# - job_name: 'serveur-2'
# static_configs:
# - targets: ['192.168.1.10:9100']cd /opt/monitoring
docker compose up -d
# Vérifier
docker compose psMéthode 2 : Installation native
Installer Prometheus
# Créer l'utilisateur
useradd --no-create-home --shell /bin/false prometheus
# Télécharger Prometheus
cd /tmp
wget https://github.com/prometheus/prometheus/releases/download/v2.48.0/prometheus-2.48.0.linux-amd64.tar.gz
tar xvf prometheus-2.48.0.linux-amd64.tar.gz
# Installer
mv prometheus-2.48.0.linux-amd64/prometheus /usr/local/bin/
mv prometheus-2.48.0.linux-amd64/promtool /usr/local/bin/
mkdir -p /etc/prometheus /var/lib/prometheus
mv prometheus-2.48.0.linux-amd64/consoles /etc/prometheus/
mv prometheus-2.48.0.linux-amd64/console_libraries /etc/prometheus/
chown -R prometheus:prometheus /etc/prometheus /var/lib/prometheusInstaller Node Exporter
# Créer l'utilisateur
useradd --no-create-home --shell /bin/false node_exporter
# Télécharger
cd /tmp
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvf node_exporter-1.7.0.linux-amd64.tar.gz
# Installer
mv node_exporter-1.7.0.linux-amd64/node_exporter /usr/local/bin/
chown node_exporter:node_exporter /usr/local/bin/node_exporterInstaller Grafana
# Ajouter le dépôt
apt install -y apt-transport-https software-properties-common
wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | tee /etc/apt/sources.list.d/grafana.list
# Installer
apt update
apt install -y grafana
# Démarrer
systemctl daemon-reload
systemctl enable grafana-server
systemctl start grafana-server# Ajouter le dépôt
cat <<EOF | tee /etc/yum.repos.d/grafana.repo
[grafana]
name=grafana
baseurl=https://rpm.grafana.com
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://rpm.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF
# Installer
dnf install -y grafana
# Démarrer
systemctl daemon-reload
systemctl enable grafana-server
systemctl start grafana-server3. Configurer Grafana
- Accédez à http://VOTRE_IP:3000
- Connectez-vous (admin/admin ou le mot de passe défini)
- Changez le mot de passe admin
- Allez dans Configuration → Data Sources
- Cliquez sur Add data source → Prometheus
- URL : http://prometheus:9090 (Docker) ou http://localhost:9090
- Cliquez Save & Test
4. Importer un dashboard
- Allez dans Dashboards → Import
- Entrez l'ID 1860 (Node Exporter Full)
- Cliquez Load
- Sélectionnez votre source Prometheus
- Cliquez Import
Dashboards populaires à importer :
- 1860 : Node Exporter Full (très complet)
- 11074 : Node Exporter for Prometheus
- 13659 : Docker and system monitoring
- 7249 : Kubernetes cluster
5. Configurer les alertes
- Dans Grafana, allez dans Alerting → Contact points
- Ajoutez un canal (Email, Slack, Discord, Telegram...)
- Créez des Alert rules basées sur vos métriques
- Exemple : Alerte si CPU > 90% pendant 5 minutes
6. Ouvrir les ports
# Grafana
ufw allow 3000/tcp
# Prometheus (optionnel, souvent en interne seulement)
# ufw allow 9090/tcp
# Node Exporter (pour scraping depuis un autre serveur)
# ufw allow 9100/tcp# Grafana
firewall-cmd --permanent --add-port=3000/tcp
# Prometheus (optionnel, souvent en interne seulement)
# firewall-cmd --permanent --add-port=9090/tcp
# Node Exporter (pour scraping depuis un autre serveur)
# firewall-cmd --permanent --add-port=9100/tcp
firewall-cmd --reload7. Monitorer plusieurs serveurs
scrape_configs:
- job_name: 'node-exporters'
static_configs:
- targets:
- 'localhost:9100' # Serveur local
- '192.168.1.10:9100' # Serveur 2
- '192.168.1.11:9100' # Serveur 3
labels:
env: 'production'8. Requêtes PromQL utiles
# CPU utilisé (%)
100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
# Mémoire utilisée (%)
(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100
# Espace disque utilisé (%)
(1 - (node_filesystem_avail_bytes / node_filesystem_size_bytes)) * 100
# Trafic réseau entrant (Mbps)
rate(node_network_receive_bytes_total[5m]) * 8 / 1024 / 1024
# Uptime en jours
node_time_seconds - node_boot_time_seconds) / 864009. Sécuriser l'installation
- Changez le mot de passe admin Grafana
- Ne pas exposer Prometheus sur Internet
- Utilisez un reverse proxy avec SSL pour Grafana
- Limitez l'accès Node Exporter par IP
Stack de monitoring prête !
Vous avez maintenant une solution de monitoring professionnelle. Explorez les dashboards disponibles sur grafana.com/grafana/dashboards