Tutoriel : Mettre en place un système de monitoring open source (Prometheus + Grafana / Netdata / Zabbix)


Objectif

Dans ce tutoriel, on va mettre en place un système de supervision temps réel d’un serveur dédié ou d’un VPS entièrement auto-hébergé, sans solutions SaaS type Datadog, UptimeRobot, NewRelic, etc. On se concentrera sur trois approches possibles :

  • Prometheus + Grafana : combo très puissant, flexible, mais nécessite un peu de configuration.
  • Netdata : rapide à installer, parfait pour une vue temps réel immédiate.
  • Zabbix : solution complète d’entreprise, idéale pour des infrastructures complexes.

1. Pourquoi surveiller son VPS ou serveur dédié ?

Superviser son infrastructure, c’est indispensable pour :

  • Détecter les anomalies avant qu’il soit trop tard (CPU à 100 %, disque plein, RAM saturée…)
  • Diagnostiquer les ralentissements (I/O, réseau, processus lents…)
  • Prévenir les coupures et les indisponibilités
  • Avoir un historique clair des performances

2. Prérequis

  • Un serveur Linux (Debian, Ubuntu, etc.)
  • Un utilisateur avec droits root ou sudo
  • Un pare-feu ouvert sur les bons ports (on y revient plus bas)
  • Un peu de temps (\~30 min)

3. Option 1 : Netdata — la solution ultra rapide

🔧 Installation

bash <(curl -Ss https://my-netdata.io/kickstart.sh)

C’est tout. Netdata s’installe, détecte automatiquement les services (MySQL, Nginx, Apache, etc.) et lance une interface Web sur le port 19999.

🔒 Sécuriser l’accès

Netdata n’a pas d’authentification intégrée. Protégez l’interface avec un reverse proxy + login (ex. Nginx + Basic Auth) ou limitez par IP via le pare-feu :

sudo ufw allow from <votre-ip> to any port 19999

✅ Avantages

  • Temps réel (rafraîchissement < 1 seconde)
  • Facile à mettre en œuvre
  • Vue complète de tous les métriques système

❌ Inconvénients

  • Pas d’alerte intégrée par email/Slack
  • Pas fait pour des dashboards personnalisés ou multiserveurs

4. Option 2 : Prometheus + Grafana — le combo moderne

📦 Étape 1 : Installer Prometheus

Créez un dossier et téléchargez Prometheus :

useradd --no-create-home --shell /bin/false prometheus
mkdir /etc/prometheus /var/lib/prometheus
chown prometheus: /etc/prometheus /var/lib/prometheus

cd /tmp
curl -LO https://github.com/prometheus/prometheus/releases/download/v2.52.0/prometheus-2.52.0.linux-amd64.tar.gz
tar xvf prometheus-2.52.0.linux-amd64.tar.gz
cp prometheus-*/prometheus /usr/local/bin/
cp prometheus-*/promtool /usr/local/bin/
cp -r prometheus-*/consoles /etc/prometheus
cp -r prometheus-*/console_libraries /etc/prometheus
cp prometheus-*/prometheus.yml /etc/prometheus/

Créez le service systemd :

nano /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
After=network.target

[Service]
User=prometheus
ExecStart=/usr/local/bin/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/var/lib/prometheus/

[Install]
WantedBy=default.target

Activez-le :

systemctl daemon-reexec
systemctl enable --now prometheus

🔍 Test : Accédez à http://<IP>:9090


📦 Étape 2 : Installer Node Exporter (collecte des métriques système)

useradd --no-create-home --shell /bin/false node_exporter

cd /tmp
curl -LO https://github.com/prometheus/node_exporter/releases/download/v1.8.0/node_exporter-1.8.0.linux-amd64.tar.gz
tar xvf node_exporter-*.tar.gz
cp node_exporter-*/node_exporter /usr/local/bin/

nano /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=default.target

Lancez-le :

systemctl daemon-reexec
systemctl enable --now node_exporter

Par défaut, il écoute sur le port 9100.

Ajoutez-le dans Prometheus (/etc/prometheus/prometheus.yml) :

scrape_configs:
  - job_name: 'node_exporter'
    static_configs:
      - targets: ['localhost:9100']

Puis :

systemctl restart prometheus

📊 Étape 3 : Installer Grafana

Pour Debian/Ubuntu :

apt install -y apt-transport-https software-properties-common wget
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
apt update
apt install grafana
systemctl enable --now grafana-server

Accédez à http://<IP>:3000 Identifiants par défaut : admin / admin

Ajoutez Prometheus comme source de données dans Grafana, puis utilisez un dashboard « Node Exporter Full » depuis Grafana.com (ID : 1860).


✅ Avantages

  • Flexible, personnalisable
  • Dashboards pros
  • Extensible à plusieurs serveurs
  • Alerting puissant

❌ Inconvénients

  • Plus long à mettre en place
  • Besoin de maintenir les services à jour

5. Option 3 : Zabbix — la solution complète

Zabbix est plus lourd à installer, mais ultra-complet. Il peut gérer des dizaines de machines, envoie des alertes par email/Telegram, a des agents sur Windows/Linux, etc.

🧰 Installation (Debian 12 + MariaDB)

apt install -y mariadb-server
mysql_secure_installation
mysql -u root -p

Créez la base :

CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER zabbix@localhost IDENTIFIED BY 'motdepassefort';
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost;
FLUSH PRIVILEGES;

Ajoutez les dépôts Zabbix :

wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_7.0-1+debian12_all.deb
dpkg -i zabbix-release_7.0-1+debian12_all.deb
apt update

Installez le serveur + frontend + agent :

apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-agent

Importez le schéma :

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

Configurez /etc/zabbix/zabbix_server.conf :

DBPassword=motdepassefort

Puis :

systemctl restart zabbix-server zabbix-agent apache2
systemctl enable zabbix-server zabbix-agent apache2

Accédez à http://<IP>/zabbix Login : Admin / zabbix


✅ Avantages

  • Complet, orienté entreprise
  • Alerting intégré
  • Supervision distribuée
  • Prise en charge multi-OS

❌ Inconvénients

  • Lourd à configurer pour un petit VPS
  • Moins intuitif que Grafana

6. Comparatif rapide

Solution Temps réel Facilité Alerting Multi-serveur Idéal pour
Netdata ⭐⭐⭐⭐⭐ 1 serveur, rapide
Prometheus+Grafana ⭐⭐⭐ Monitoring moderne
Zabbix ⚠️ 15s\~ ⭐⭐ Parc serveur + alerting pro

7. Conclusion

Si tu veux surveiller un seul serveur rapidement, Netdata est parfait. Si tu veux un monitoring sérieux avec alertes, choisis Prometheus + Grafana. Si tu veux gérer un parc de serveurs avec alertes avancées, pars sur Zabbix.

Dans tous les cas, éviter les solutions SaaS, c’est garder le contrôle de ses données, rester souverain, et avoir un système 100 % open source, personnalisable et sans abonnement.