Prometheus + Grafana + node_exporter Installer Prometheus, node_exporter et Grafana sur un VPS HolyCloud pour surveiller CPU, RAM, disque et réseau avec tableaux de bord. ~16 min de lecture Avancé #prometheus #grafana #monitoring #node_exporter 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:9090 si réseau Docker partagé, sinon http://host.docker.internal:9090 ou 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. Suite de la lecture Article précédent PHP-FPM sur VPS Performance Lire Article suivant Redis comme cache applicatif Lire