Prometheus + Grafana + node_exporter
Cette stack open source collecte des métriques (Prometheus), les expose via node_exporter et les visualise dans Grafana. Idéal sur un VPS Performance HolyCloud dédié au monitoring ou sur le VPS surveillé lui-même pour des petits parcs.
Prérequis
- VPS Linux 2 Go+ RAM (4 Go si Grafana + Prometheus + plusieurs cibles)
- Ports : 9090 (Prometheus), 3000 (Grafana), 9100 (node_exporter) — restreignez par pare-feu
- Nom de domaine ou accès VPN recommandé pour l'UI Grafana
- Sauvegarde des volumes Docker ou répertoires de données
Architecture
[VPS cible] node_exporter:9100
↓ scrape
[Prometheus] :9090 → [Grafana] :3000 (datasource Prometheus)
Installation node_exporter (sur chaque VPS)
NODE_EXPORTER_VERSION=1.8.2
cd /tmp
curl -LO https://github.com/prometheus/node_exporter/releases/download/v${NODE_EXPORTER_VERSION}/node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz
tar xzf node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz
sudo cp node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64/node_exporter /usr/local/bin/
Service systemd :
sudo tee /etc/systemd/system/node_exporter.service << 'EOF'
[Unit]
Description=Prometheus Node Exporter
After=network.target
[Service]
User=nobody
ExecStart=/usr/local/bin/node_exporter --web.listen-address=127.0.0.1:9100
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
curl -s http://127.0.0.1:9100/metrics | head
Écoute sur
127.0.0.1; exposez via tunnel SSH ou reverse proxy authentifié.
Prometheus (Docker recommandé)
sudo mkdir -p /opt/prometheus/{data,config}
sudo tee /opt/prometheus/config/prometheus.yml << 'EOF'
global:
scrape_interval: 15s
scrape_configs:
- job_name: node
static_configs:
- targets:
- 127.0.0.1:9100
labels:
instance: vps-performance-01
EOF
docker run -d --name prometheus --restart unless-stopped \
-p 127.0.0.1:9090:9090 \
-v /opt/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml:ro \
-v /opt/prometheus/data:/prometheus \
prom/prometheus:latest \
--config.file=/etc/prometheus/prometheus.yml \
--storage.tsdb.retention.time=15d
Ajoutez d'autres VPS :
- targets: ['10.0.0.5:9100', '10.0.0.6:9100']
Grafana
docker run -d --name grafana --restart unless-stopped \
-p 127.0.0.1:3000:3000 \
-v /opt/grafana:/var/lib/grafana \
grafana/grafana:latest
Premier login : http://127.0.0.1:3000 → admin / admin (changez le mot de passe).
- Connections → Data sources → Prometheus
- URL :
http://prometheus:9090si réseau Docker partagé, sinonhttp://host.docker.internal:9090ou IP hôte - Dashboards → Import → ID 1860 (Node Exporter Full)
Reliez les conteneurs :
docker network create monitoring
docker network connect monitoring prometheus
docker network connect monitoring grafana
Datasource URL interne : http://prometheus:9090.
Reverse proxy Nginx (HTTPS)
server {
listen 443 ssl;
server_name grafana.votredomaine.tld;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Activez l'authentification Grafana (OAuth, LDAP) en production.
Alertes (introduction)
Fichier rules.yml :
groups:
- name: host
rules:
- alert: HostHighCpu
expr: 100 - (avg by(instance)(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 90
for: 10m
labels:
severity: warning
Montez le fichier dans Prometheus et référencez rule_files dans prometheus.yml. Connectez Alertmanager pour email/Slack (hors scope minimal).
Sécurité
- Ne exposez pas 9100 et 9090 sur Internet sans TLS + auth
- Préférez un VPS monitoring séparé qui scrape via VPN WireGuard
- Limitez la rétention disque (
retention.time,retention.size)
Vérification
docker ps
curl -s http://127.0.0.1:9090/api/v1/targets | jq '.data.activeTargets[].health'
Dans Grafana : graphiques CPU, node_memory_MemAvailable_bytes, node_filesystem_avail_bytes.
Dépannage
| Problème | Piste |
|---|---|
| ---------- | ------- |
| Target DOWN | Pare-feu, mauvaise IP, node_exporter arrêté |
| Grafana no data | URL datasource, réseau Docker |
| Disque plein | Réduire rétention Prometheus |
Besoin d'aide ?
HolyCloud peut confirmer les quotas bande passante si vous centralisez le scrape de nombreux VPS vers un seul nœud Prometheus.