Comment enregistrer et surveiller la consommation de trafic avec vnStat
vnStat est un outil en console léger qui conserve l'historique du trafic réseau sous Linux. Un service en arrière-plan, vnstatd, lit les compteurs des interfaces fournis par le noyau et les enregistre dans une petite base de données. Vous pouvez ensuite consulter le trafic par heure, par jour, par mois et par an, ou suivre en temps réel le débit de transfert actuel. vnStat ne capture pas les paquets, ce qui le rend très peu gourmand en ressources. Il indique la quantité de trafic ayant transité par chaque interface, mais pas les adresses IP, les ports ni les connexions qui l'ont généré.
Ce guide explique comment installer vnStat à partir du dépôt ou du code source, et comment consulter les statistiques de trafic. vnStat est utile sur tout serveur où le trafic est limité ou facturé, par exemple sur un VPS Linux ou un serveur dédié INTROSERV.
Installer vnStat depuis le dépôt
Connectez-vous à votre serveur via SSH. Pour plus de détails, consultez Connexion via SSH.
Ubuntu et Debian
vnStat est disponible dans les dépôts standard. Installez-le :
sudo apt update sudo apt install -y vnstat
L'installation démarre le service vnstat et l'active au démarrage du système. Vérifiez qu'il est en cours d'exécution :
sudo systemctl status vnstat
La sortie doit afficher active (running). Si le service ne fonctionne pas, activez-le et démarrez-le avec la commande sudo systemctl enable --now vnstat.

AlmaLinux et Rocky Linux
vnStat est disponible dans le dépôt EPEL. Activez EPEL et installez vnStat :
sudo dnf install -y epel-release sudo dnf install -y vnstat
Activez et démarrez le service :
sudo systemctl enable vnstat && sudo systemctl start vnstat
Vérifiez qu'il est en cours d'exécution :
sudo systemctl status vnstat
Installer vnStat à partir du code source
Compilez vnStat à partir du code source si le paquet n'est pas disponible pour votre distribution ou si vous avez besoin de la dernière version.
Si vnStat est déjà installé depuis le dépôt, supprimez d'abord le paquet : sudo apt remove -y vnstat sous Ubuntu et Debian, ou sudo dnf remove -y vnstat sous AlmaLinux et Rocky Linux. Les deux installations utilisent le même fichier de configuration, la même base de données et le même nom de service ; les conserver ensemble provoque donc des conflits.
Installez les dépendances de compilation. Sous Ubuntu et Debian :
sudo apt update && sudo apt install -y build-essential libsqlite3-dev wget
Sous AlmaLinux et Rocky Linux :
sudo dnf group install -y "Development Tools" sudo dnf install -y sqlite-devel wget
Téléchargez et décompressez la dernière version :
wget https://humdi.net/vnstat/vnstat-latest.tar.gz tar -xf vnstat-latest.tar.gz cd vnstat-*/
L'archive se décompresse dans un répertoire dont le nom contient le numéro de version, par exemple vnstat-2.13. Le caractère générique de vnstat-*/ permet d'y accéder sans saisir le numéro de version.
Compilez et installez vnStat :
./configure --prefix=/usr --sysconfdir=/etc && make && sudo make install
L'option --prefix=/usr installe les programmes dans /usr/bin et /usr/sbin, et --sysconfdir=/etc place le fichier de configuration dans /etc/vnstat.conf.
Sous AlmaLinux et Rocky Linux avec SELinux activé, si vnStat a été installé auparavant depuis le dépôt, restaurez d'abord les étiquettes SELinux du répertoire de la base de données. Sinon, le service ne démarre pas et renvoie l'erreur Permission denied :
sudo restorecon -Rv /var/lib/vnstat
Installez le service systemd, puis activez-le et démarrez-le :
sudo cp -v examples/systemd/vnstat.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now vnstat
Vérifiez la version et l'état du service :
vnstat --version sudo systemctl status vnstat
Identifier l'interface réseau
Par défaut, vnStat ajoute à sa base de données toutes les interfaces réseau du serveur, à l'exception de l'interface de bouclage (loopback). Pour afficher les interfaces actuellement enregistrées dans la base de données, exécutez :
vnstat --dbiflist
Vous pouvez également lister les interfaces avec la commande ip a. Les exemples ci-dessous utilisent l'interface ens3. Remplacez-la par le nom de votre interface, par exemple eth0 ou enp1s0.
Par défaut, vnStat enregistre les nouvelles données dans la base toutes les 5 minutes. Juste après l'installation, la commande vnstat indique qu'il n'y a pas encore de données, par exemple avec le message Not enough data available yet ou No data. Patientez quelques minutes, puis relancez la commande.
Consulter les statistiques de trafic
Exécutez vnstat sans option pour afficher un récapitulatif de toutes les interfaces, comprenant le trafic du jour et du mois en cours ainsi qu'une estimation pour la fin de chaque période.
vnstat
Dans tous les rapports, rx désigne le trafic entrant, tx le trafic sortant et total leur somme.
Trafic par heure
Pour afficher les 12 dernières entrées horaires, exécutez :
vnstat -i ens3 -h --limit 12

Trafic par jour
Pour afficher les 2 dernières entrées quotidiennes, exécutez :
vnstat -i ens3 -d --limit 2
Sans --limit, le nombre d'entrées affichées est défini par le paramètre ListDays du fichier /etc/vnstat.conf, 30 par défaut. Ce paramètre ne limite que l'affichage, pas les données stockées dans la base.
Trafic par mois
vnstat -i ens3 -m

Trafic par an
vnstat -i ens3 -y
Trafic en temps réel
Pour suivre le débit de transfert actuel, exécutez :
vnstat -i ens3 -l
Le débit est actualisé jusqu'à ce que vous appuyiez sur Ctrl+C. Si la commande s'est exécutée pendant plus de 10 secondes, vnStat affiche ensuite un récapitulatif pour cette durée.

Trafic sur un nombre de secondes donné
Pour mesurer le débit moyen sur une période donnée, indiquez la durée en secondes. Par exemple, 20 secondes :
vnstat -i ens3 -tr 20
Sans valeur, la mesure dure 5 secondes. Le résultat s'affiche à la fin du délai.
Graphique des dernières 24 heures
Pour afficher le trafic des dernières 24 heures sous forme de graphique en mode texte, exécutez :
vnstat -i ens3 -hg

Pour traiter les statistiques dans un script, utilisez l'option --json ou --oneline. Par exemple, vnstat -i ens3 --json d exporte les statistiques quotidiennes au format JSON.
Définir l'interface par défaut
Si le serveur possède plusieurs interfaces et que vous en consultez généralement une seule, définissez-la comme interface par défaut dans le fichier de configuration /etc/vnstat.conf. Ouvrez le fichier :
sudo nano /etc/vnstat.conf
Sous AlmaLinux et Rocky Linux, nano n'est pas installé par défaut. Installez-le avec sudo dnf install -y nano ou utilisez vi.
Repérez la ligne Interface, supprimez le point-virgule au début et saisissez le nom de votre interface :
Interface "ens3"
Enregistrez le fichier. Désormais, vnstat affiche cette interface lorsque vous l'exécutez sans l'option -i, par exemple vnstat -d. Le service vnstat continue de surveiller toutes les interfaces.
Pour la liste complète des options, exécutez vnstat --longhelp ou consultez man vnstat.