Come registrare e monitorare il consumo di traffico con vnStat
vnStat è uno strumento a riga di comando leggero che conserva lo storico del traffico di rete su Linux. Un servizio in background, vnstatd, legge i contatori delle interfacce dal kernel e li salva in un piccolo database. È quindi possibile visualizzare il traffico per ore, giorni, mesi e anni, oppure monitorare in tempo reale la velocità di trasferimento corrente. vnStat non cattura i pacchetti, perciò il carico aggiuntivo sul sistema è molto basso. Mostra quanto traffico è passato attraverso ciascuna interfaccia, ma non quali indirizzi IP, porte o connessioni lo abbiano generato.
Questa guida mostra come installare vnStat dal repository o dal codice sorgente e come visualizzare le statistiche del traffico. vnStat è utile su qualsiasi server in cui il traffico è limitato o a pagamento, ad esempio su un VPS Linux o su un server dedicato INTROSERV.
Installare vnStat dal repository
Collegatevi al server tramite SSH. Per i dettagli, consultate Connessione tramite SSH.
Ubuntu e Debian
vnStat è disponibile nei repository standard. Installatelo:
sudo apt update sudo apt install -y vnstat
L'installazione avvia il servizio vnstat e lo abilita all'avvio del sistema. Verificate che sia in esecuzione:
sudo systemctl status vnstat
L'output deve mostrare active (running). Se il servizio non è in esecuzione, abilitatelo e avviatelo con il comando sudo systemctl enable --now vnstat.

AlmaLinux e Rocky Linux
vnStat è disponibile nel repository EPEL. Abilitate EPEL e installate vnStat:
sudo dnf install -y epel-release sudo dnf install -y vnstat
Abilitate e avviate il servizio:
sudo systemctl enable vnstat && sudo systemctl start vnstat
Verificate che sia in esecuzione:
sudo systemctl status vnstat
Installare vnStat dal codice sorgente
Compilate vnStat dal codice sorgente se il pacchetto non è disponibile per la vostra distribuzione o se vi serve la versione più recente.
Se vnStat è già stato installato dal repository, rimuovete prima il pacchetto: sudo apt remove -y vnstat su Ubuntu e Debian oppure sudo dnf remove -y vnstat su AlmaLinux e Rocky Linux. Entrambe le installazioni usano lo stesso file di configurazione, lo stesso database e lo stesso nome di servizio, quindi tenerle insieme causa conflitti.
Installate le dipendenze di compilazione. Su Ubuntu e Debian:
sudo apt update && sudo apt install -y build-essential libsqlite3-dev wget
Su AlmaLinux e Rocky Linux:
sudo dnf group install -y "Development Tools" sudo dnf install -y sqlite-devel wget
Scaricate e decomprimete l'ultima versione:
wget https://humdi.net/vnstat/vnstat-latest.tar.gz tar -xf vnstat-latest.tar.gz cd vnstat-*/
L'archivio viene decompresso in una directory il cui nome contiene il numero di versione, ad esempio vnstat-2.13. Il carattere jolly vnstat-*/ consente di accedervi senza digitare il numero di versione.
Compilate e installate vnStat:
./configure --prefix=/usr --sysconfdir=/etc && make && sudo make install
L'opzione --prefix=/usr installa i programmi in /usr/bin e /usr/sbin, mentre --sysconfdir=/etc colloca il file di configurazione in /etc/vnstat.conf.
Su AlmaLinux e Rocky Linux con SELinux abilitato, se vnStat era stato precedentemente installato dal repository, ripristinate prima le etichette SELinux della directory del database. In caso contrario il servizio non si avvia e restituisce l'errore Permission denied:
sudo restorecon -Rv /var/lib/vnstat
Installate il servizio systemd, quindi abilitatelo e avviatelo:
sudo cp -v examples/systemd/vnstat.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now vnstat
Verificate la versione e lo stato del servizio:
vnstat --version sudo systemctl status vnstat
Individuare l'interfaccia di rete
Per impostazione predefinita, vnStat aggiunge al database tutte le interfacce di rete del server, tranne l'interfaccia di loopback. Per visualizzare le interfacce attualmente presenti nel database, eseguite:
vnstat --dbiflist
È inoltre possibile elencare le interfacce con il comando ip a. Gli esempi seguenti usano l'interfaccia ens3. Sostituitela con il nome della vostra interfaccia, ad esempio eth0 o enp1s0.
Per impostazione predefinita, vnStat salva nel database i nuovi dati ogni 5 minuti. Subito dopo l'installazione, il comando vnstat segnala che non ci sono ancora dati, ad esempio con il messaggio Not enough data available yet o No data. Attendete qualche minuto ed eseguite di nuovo il comando.
Visualizzare le statistiche del traffico
Eseguite vnstat senza opzioni per visualizzare un riepilogo di tutte le interfacce, che include il traffico del giorno e del mese correnti e una stima per la fine di ciascun periodo.
vnstat
In tutti i report, rx indica il traffico in entrata, tx il traffico in uscita e total la loro somma.
Traffico orario
Per visualizzare le ultime 12 voci orarie, eseguite:
vnstat -i ens3 -h --limit 12

Traffico giornaliero
Per visualizzare le ultime 2 voci giornaliere, eseguite:
vnstat -i ens3 -d --limit 2
Senza --limit, il numero di voci mostrate è definito dal parametro ListDays in /etc/vnstat.conf, pari a 30 per impostazione predefinita. Il parametro limita solo l'output, non i dati memorizzati nel database.
Traffico mensile
vnstat -i ens3 -m

Traffico annuale
vnstat -i ens3 -y
Traffico in tempo reale
Per monitorare la velocità di trasferimento corrente, eseguite:
vnstat -i ens3 -l
La velocità viene aggiornata finché non premete Ctrl+C. Se il comando è rimasto in esecuzione per più di 10 secondi, vnStat mostra poi un riepilogo relativo a questo intervallo.

Traffico in un numero definito di secondi
Per misurare la velocità media del traffico in un determinato periodo, indicate la durata in secondi. Ad esempio, 20 secondi:
vnstat -i ens3 -tr 20
Senza indicare un valore, la misurazione dura 5 secondi. Il risultato viene mostrato allo scadere del tempo.
Grafico delle ultime 24 ore
Per visualizzare il traffico delle ultime 24 ore sotto forma di grafico testuale, eseguite:
vnstat -i ens3 -hg

Per elaborare le statistiche in uno script, usate l'opzione --json o --oneline. Ad esempio, vnstat -i ens3 --json d esporta le statistiche giornaliere in formato JSON.
Impostare l'interfaccia predefinita
Se il server dispone di più interfacce e di norma ne controllate una sola, impostatela come predefinita nel file di configurazione /etc/vnstat.conf. Aprite il file:
sudo nano /etc/vnstat.conf
Su AlmaLinux e Rocky Linux nano non è installato per impostazione predefinita. Installatelo con sudo dnf install -y nano oppure usate vi.
Trovate la riga Interface, rimuovete il punto e virgola all'inizio e inserite il nome della vostra interfaccia:
Interface "ens3"
Salvate il file. Ora vnstat mostra questa interfaccia quando viene eseguito senza l'opzione -i, ad esempio vnstat -d. Il servizio vnstat continua a monitorare tutte le interfacce.
Per l'elenco completo delle opzioni, eseguite vnstat --longhelp o consultate man vnstat.