Monitorer son VPS en temps réel avec Netdata

Monitorer son VPS en temps réel avec Netdata

Installez en moins de 2 minutes un dashboard de monitoring temps réel ultra-complet. Netdata affiche CPU, RAM, disque, réseau, processus, services et plus de 800 métriques par défaut, avec une visualisation par seconde et des alertes automatiques.

Introduction

Netdata est l'outil de monitoring le plus rapide à mettre en place pour un VPS Linux. Contrairement à Prometheus/Grafana qui demandent plusieurs heures de configuration, Netdata fonctionne en moins de 2 minutes, détecte automatiquement tous vos services (Nginx, MySQL, Docker, etc.) et expose un dashboard accessible immédiatement.

Prérequis

  • VPS Linux (Debian, Ubuntu, CentOS, Fedora, etc.)
  • Accès root ou sudo
  • 256 MB de RAM libre (très léger)

Étape 1 : Installation en une commande

Netdata fournit un kickstart officiel qui détecte la distribution :

wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
sudo sh /tmp/netdata-kickstart.sh

Pendant l'installation, le script demande si vous souhaitez activer le télémétrie anonyme et la connexion à Netdata Cloud. Vous pouvez refuser et utiliser uniquement le dashboard local.

Étape 2 : Accéder au dashboard

Netdata expose son interface sur le port 19999 :

http://IP_DE_VOTRE_VPS:19999

Vous voyez immédiatement toutes les métriques en temps réel : CPU par core, RAM, swap, disque, réseau, processus top.

Étape 3 : Sécuriser l'accès au dashboard

Le port 19999 est ouvert publiquement par défaut, ce qui n'est pas idéal. Deux approches.

Option A : Restreindre par IP avec UFW

sudo ufw deny 19999/tcp
sudo ufw allow from VOTRE_IP_FIXE to any port 19999

Option B : Reverse proxy Nginx avec authentification

Installez apache2-utils pour créer un mot de passe :

sudo apt install -y apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd-netdata admin

Configurez Nginx :

sudo nano /etc/nginx/sites-available/netdata

Contenu :

server {
    listen 80;
    server_name netdata.votre-domaine.com;

    auth_basic "Netdata Monitoring";
    auth_basic_user_file /etc/nginx/.htpasswd-netdata;

    location / {
        proxy_pass http://127.0.0.1:19999;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Activez et ajoutez SSL :

sudo ln -s /etc/nginx/sites-available/netdata /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo certbot --nginx -d netdata.votre-domaine.com

Bloquez le port 19999 public :

sudo ufw deny 19999/tcp

Étape 4 : Configurer les alertes

Netdata inclut plus de 200 alertes par défaut (CPU > 90%, disque plein, processus zombie, etc.). Pour recevoir les alertes par email, Discord ou Slack, éditez :

sudo nano /etc/netdata/health_alarm_notify.conf

Alertes Discord (recommandé)

SEND_DISCORD="YES"
DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/XXX/YYY"
DEFAULT_RECIPIENT_DISCORD="alerts"

Alertes email

SEND_EMAIL="YES"
DEFAULT_RECIPIENT_EMAIL="[email protected]"

Rechargez :

sudo systemctl restart netdata

Testez l'envoi :

sudo -u netdata /usr/libexec/netdata/plugins.d/alarm-notify.sh test

Étape 5 : Modules auto-détectés

Netdata détecte automatiquement et monitor :

  • Nginx / Apache : connexions, requêtes/seconde, codes HTTP
  • MySQL / MariaDB / PostgreSQL : requêtes, connexions, slow queries
  • Redis / Memcached : hit/miss ratio, mémoire
  • Docker : containers, CPU, RAM par container
  • PHP-FPM : pools, requêtes actives
  • systemd : services en échec
  • fail2ban : IPs bannies en temps réel

Listez les modules actifs :

sudo systemctl status netdata
ls /etc/netdata/python.d/

Étape 6 : Réduire la rétention pour économiser le disque

Par défaut, Netdata garde 1 heure de données en mémoire et 1 jour sur disque. Pour augmenter :

sudo nano /etc/netdata/netdata.conf

Modifiez :

[db]
    mode = dbengine
    storage tiers = 3
    # Tier 0 (haute résolution, 1s)
    dbengine multihost disk space MB = 256
    # Tier 1 (1m)
    dbengine tier 1 multihost disk space MB = 128
    # Tier 2 (1h, long terme)
    dbengine tier 2 multihost disk space MB = 64

Redémarrez :

sudo systemctl restart netdata

Dépannage

Le dashboard ne se charge pas

Vérifiez le service :

sudo systemctl status netdata
sudo journalctl -u netdata -n 50 --no-pager

CPU élevé causé par Netdata

Netdata consomme normalement moins de 5% de CPU. Si plus :

sudo nano /etc/netdata/netdata.conf

Augmentez l'intervalle de collecte :

[global]
    update every = 5

Module MySQL non détecté

Créez un user MySQL dédié au monitoring :

CREATE USER 'netdata'@'localhost' IDENTIFIED BY '';
GRANT USAGE, REPLICATION CLIENT, PROCESS ON *.* TO 'netdata'@'localhost';
FLUSH PRIVILEGES;

Commandes utiles

# Statut
sudo systemctl status netdata

# Logs
sudo journalctl -u netdata -f

# Liste des alertes actives
curl -s http://localhost:19999/api/v1/alarms | jq

# Désinstaller Netdata
sudo /usr/libexec/netdata/netdata-uninstaller.sh --yes

Conclusion

Netdata est la solution la plus simple et complète pour surveiller un VPS Linux. Pour aller plus loin, combinez-le avec :

  • Uptime Kuma pour la supervision externe (tuto VeryCloud à venir)
  • Netdata Cloud (gratuit) pour agréger plusieurs VPS dans un seul dashboard
  • Prometheus / Grafana si vous avez besoin de stockage long terme et de dashboards customisés

Ressources

Join our Discord community server

For any questions, suggestions, or just to chat with the community, join us on Discord!

900+Members