Sur un serveur Linux, connaître l’état du système en permanence est une nécessité opérationnelle. Les solutions classiques — Prometheus, Grafana, Zabbix — sont puissantes mais exigent du temps de configuration, des dépendances multiples et une courbe d’apprentissage non négligeable. Netdata propose une autre approche : un agent unique, auto-configurant, qui démarre en quelques minutes et expose immédiatement des métriques par seconde sur une interface web claire et réactive.
Contrairement aux outils de scraping à intervalles de 15 ou 30 secondes, Netdata collecte ses données chaque seconde. Cela permet de détecter des pics transitoires de CPU, des bursts réseau ou des lenteurs d’I/O qui disparaissent avant le prochain cycle de collecte d’un système classique. La granularité temporelle est sa principale force.
Cet article couvre l’installation de Netdata sur Debian/Ubuntu, l’exploration du tableau de bord, la configuration des alertes personnalisées et l’intégration dans un écosystème de supervision existant. Aucune connaissance préalable de l’outil n’est requise.
Qu’est-ce que Netdata ?
Netdata est un agent de monitoring open source écrit en C, conçu pour fonctionner sur chaque nœud de l’infrastructure. Il auto-détecte les services actifs (Apache, Nginx, MySQL, Redis, Docker, etc.) et commence immédiatement à collecter leurs métriques sans aucune configuration manuelle. La liste des plugins embarqués couvre plus de 800 sources de données différentes.
Parmi ses caractéristiques techniques clés :
- Résolution par seconde — latence inférieure à 2 secondes entre l’événement et l’affichage
- Empreinte légère — jusqu’à 88 % de RAM en moins et 36 % de CPU en moins comparé à une stack Prometheus + Grafana
- 400+ templates d’alertes prêts à l’emploi, activés par défaut
- Détection d’anomalies ML intégrée, sans configuration supplémentaire
- Mode parent/enfant pour la supervision centralisée multi-nœuds
Installation de l’agent Netdata
Méthode recommandée : le script kickstart.sh
Le projet fournit un script d’installation universel qui détecte automatiquement la distribution Linux et utilise le gestionnaire de paquets natif ou des binaires statiques en fallback :
# Installation via curl
curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh
sh /tmp/netdata-kickstart.sh
# Ou en une seule ligne
bash <(curl -Ss https://get.netdata.cloud/kickstart.sh)
Pour un environnement de production, il est recommandé de vérifier l’intégrité du script avant exécution :
[ "$(curl -Ss https://get.netdata.cloud/kickstart.sh | md5sum | cut -d ' ' -f 1)" ]
&& echo "Script valide" || echo "Intégrité compromise"
Pour une installation non interactive (scripts CI/CD, automatisation Ansible) :
sh /tmp/netdata-kickstart.sh --non-interactive --stable-channel --no-updates
Via le dépôt officiel (Debian/Ubuntu)
# Ajout du dépôt Netdata
wget -O /tmp/netdata-repo.deb https://repo.netdata.cloud/repos/repoconfig/debian/bookworm/netdata-repo_3-3+debian12_all.deb
dpkg -i /tmp/netdata-repo.deb
apt update && apt install netdata -y
Vérification du service
# Statut du service
systemctl status netdata
# Activation au démarrage
systemctl enable --now netdata
# Vérification du port d'écoute
ss -tlnp | grep 19999
Premier accès au tableau de bord
Dès l’installation terminée, le tableau de bord est accessible localement :
http://localhost:19999
Pour y accéder depuis une machine distante, il faut ouvrir temporairement le port ou créer un tunnel SSH :
# Tunnel SSH depuis le poste de travail
ssh -L 19999:localhost:19999 user@mon-serveur
# Accès dans le navigateur
http://localhost:19999
Le tableau de bord affiche en temps réel : utilisation CPU (par cœur), mémoire RAM et swap, I/O disque par partition, trafic réseau par interface, et tous les services auto-détectés. La navigation est fluide et la mise à jour se fait sans rechargement de page.
Configuration de base
Le fichier de configuration principal se trouve dans /etc/netdata/netdata.conf. Pour l’éditer via l’utilitaire officiel :
cd /etc/netdata
sudo ./edit-config netdata.conf
Les paramètres les plus utiles dans la section [global] :
[global]
# Historique en RAM (secondes) — défaut : 3600
history = 7200
# Résolution de collecte (secondes) — défaut : 1
update every = 1
# Répertoire des logs
error log = /var/log/netdata/error.log
Pour restreindre l’accès au tableau de bord à localhost uniquement (recommandé si vous utilisez un reverse proxy) :
[web]
bind to = localhost
Exposition derrière un reverse proxy Nginx
location /netdata/ {
proxy_pass http://127.0.0.1:19999/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
Configuration des alertes personnalisées
Netdata inclut plus de 400 templates d’alertes actifs par défaut. Pour créer une règle personnalisée, il suffit d’ajouter un fichier dans /etc/netdata/health.d/ :
sudo ./edit-config health.d/custom.conf
Exemple d’alerte sur l’utilisation RAM :
alarm: ram_high_usage
on: system.ram
lookup: average -5m percentage of used
units: %
every: 1m
warn: $this > 80
crit: $this > 95
info: Utilisation RAM critique — vérifier les processus consommateurs
to: sysadmin
Exemple d’alerte sur la charge CPU :
alarm: cpu_overload
on: system.cpu
lookup: average -3m percentage
units: %
every: 30s
warn: $this > 75
crit: $this > 90
delay: up 30s down 5m
info: CPU surchargé pendant plus de 3 minutes
Le paramètre delay implémente une hystérésis qui évite les alertes répétitives : ici, l’alerte attend 30 secondes avant de se déclencher, mais reste active 5 minutes après la normalisation.
Rechargement des règles sans redémarrage du service :
sudo netdatacli reload-health
Configuration des notifications
Netdata supporte Slack, PagerDuty, email, Telegram, ntfy et de nombreux autres canaux. Configuration via :
sudo ./edit-config health_alarm_notify.conf
Pour activer les notifications email :
EMAIL_SENDER="[email protected]"
SEND_EMAIL="YES"
DEFAULT_RECIPIENT_EMAIL="[email protected]"
Supervision multi-nœuds en mode parent/enfant
Netdata peut fonctionner en mode agrégateur : un nœud parent reçoit les flux de métriques de plusieurs enfants et centralise l’affichage. Sur le nœud enfant :
[stream]
enabled = yes
destination = ip-du-parent:19999
api key = VOTRE-UUID-ICI
Sur le nœud parent :
[VOTRE-UUID-ICI]
enabled = yes
allow from = *
Générer un UUID pour la clé d’API :
uuidgen
Intégration avec Prometheus et Grafana
Netdata expose nativement ses métriques au format Prometheus sur le chemin /api/v1/allmetrics?format=prometheus. Cela permet de l’intégrer dans une stack Prometheus existante et de créer des dashboards Grafana complémentaires pour la rétention longue durée :
# Dans prometheus.yml
scrape_configs:
- job_name: 'netdata'
metrics_path: '/api/v1/allmetrics'
params:
format: ['prometheus']
static_configs:
- targets: ['localhost:19999']
L’approche la plus pragmatique consiste à utiliser Netdata pour le débogage temps réel (pic CPU, fuite mémoire en cours) et Prometheus pour l’historique long terme et la corrélation multi-services.
À lire également
- Prometheus et Grafana sur Debian — installation, configuration et dashboards pratiques
- Supervision avec Zabbix 7.0 LTS sur Debian/Ubuntu
- eBPF sur Linux : observabilité et traçage kernel avec bpftrace et BCC
- Surveillance et diagnostic d’un serveur Linux avec vmstat, iotop et htop