Come monitorare il consumo di banda in Linux utilizzando vnStat
VnStat è un applicativo open source, utilizzabile da linea di comando, grazie al quale possiamo verificare quanta banda viene utilizzata dalle interfacce di rete presenti nel nostro server linux, e visualizzare una statistica oraria, giornaliera, mensile, o per un periodo di tempo specificato.
Il nostro server linux monta una CentOS 7, per cui ci dedicheremo a questa distribuzione.
Installazione di VnStat
Dobbiamo abilitare, se ancora non l'avete fatto, la repository EPEL
# yum install epel-release
Dopodichè procediamo con l'installazione
# yum install vnstat
Ed infine avviamo l'applicativo
# systemctl enable --now vnstat
Configurazione di Vnstat
Innanzitutto, identifichiamo le interfacce di rete del nostro server linux, utilizzando ifconfig
# ifconfig
Il risultato sarà il seguente
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 176.255.75.122 netmask 255.255.255.0 broadcast 178.255.79.255
inet6 fe80::e85d:b2f5:e5f9:9bca prefixlen 64 scopeid 0x20<link>
ether ae:a0:5d:2f:dc:39 txqueuelen 1000 (Ethernet)
RX packets 1035393463 bytes 79466035105 (74.0 GiB)
RX errors 0 dropped 133958 overruns 0 frame 0
TX packets 22040838 bytes 6380683143 (5.9 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.12 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::aca0:ddff:fee0:a233 prefixlen 64 scopeid 0x20<link>
ether ae:a0:dd:e0:a2:33 txqueuelen 1000 (Ethernet)
RX packets 1675320 bytes 576964295 (550.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1687660 bytes 1453134802 (1.3 GiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 470042 bytes 181251551 (172.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 470042 bytes 181251551 (172.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
La nostra attenzione sarà concentrata sull'interfaccia eth0, che è la scheda di rete esposta sulla WAN (la eth1 è la scheda utilizzata per le comunicazioni in LAN).
Un altro modo per verificare le interfacce è utilizzare lo stesso Vnstat, che le identifica in autonomia:
# ls /var/lib/vnstat
eth0 eth1
Passiamo adesso alla configurazione di Vnstat.
La configurazione è semplice: occorre editare il file di configurazione "/etc/vnstat.conf", ad esempio utilizzando l'editori vi
# vi /etc/vnstat.conf
Identifichiamo la linea "default interface": qui occorre indicare l'interfaccia di default che vogliamo monitorare, cioè la eth0.
# default interface
Interface "eth0"
Se la nostra interfaccia avesse un nome differente, occorre modificare il nome indicato nel file di configurazione.
Monitorare il consumo di banda delle interfacce di rete
Bene, adesso lanciamo finalmente Vnstat, con il comando vnstat
# vnstat
Il risultato sarà il seguente
rx / tx / total / estimated
eth0: Not enough data available yet.
eth1: Not enough data available yet.
Vnstat ci sta comunicando che non ci sono sufficienti dati per fornirci informazioni, occorre attendere ancora qualche minuto.
Nel frattempo vi spiego il significato delle 4 colonne presenti:
- rx: è il traffico in entrata
- tx: è il traffico in uscita
- total: è il traffico totale
- estimed: è il traffico stimato
E' trascorso qualche minuto, rilanciamo il comando vnstat, ed ecco il risultato di semplice lettura:
rx / tx / total / estimated
eth0:
mar '20 10,17 MiB / 1,05 MiB / 11,22 MiB / 144,00 MiB
today 10,17 MiB / 1,05 MiB / 11,22 MiB / 26 MiB
eth1:
mar '20 10 KiB / 12 KiB / 22 KiB / 0 KiB
today 10 KiB / 12 KiB / 22 KiB / --
Per ogni interfaccia di rete abbiamo due righe:
- la prima riga evidenzia i dati del mese di marzo 2020 (in mese in corso)
- la seconda riga i dati di oggi
Monitorare una singola interfaccia di rete
Se volessimo monitorare solo una interfaccia, ad esempio la eth0, utilizziamo l'opzione "-i" seguita dal nome dell'interfaccia
# vnstat -i eth0
Ecco il risultato
Database updated: Tue Mar 3 09:43:55 2020
eth0 since 03/03/2020
rx: 11,35 MiB tx: 1,12 MiB total: 12,47 MiB
monthly
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
mar '20 11,35 MiB | 1,12 MiB | 12,47 MiB | 0,50 kbit/s
------------------------+-------------+-------------+---------------
estimated 144 MiB | 13 MiB | 157 MiB |
daily
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
today 11,35 MiB | 1,12 MiB | 12,47 MiB | 2,92 kbit/s
------------------------+-------------+-------------+---------------
estimated 27 MiB | 2 MiB | 29 MiB |
Monitorare l'utilizzo di banda per ora
Per ottenere le informazioni relative al consumo di banda orario, utilizziamo l'opzione "-h"
# vnstat -h -i eth0
Ecco il risultato
eth0 09:48
^ r
| r
| r
| r
| r
| r
| r
| r
| r
| r r
-+--------------------------------------------------------------------------->
| 10 11 12 13 14 15 16 17 18 19 20 21 22 23 00 01 02 03 04 05 06 07 08 09
h rx (KiB) tx (KiB) h rx (KiB) tx (KiB) h rx (KiB) tx (KiB)
10 0 0 18 0 0 02 0 0
11 0 0 19 0 0 03 0 0
12 0 0 20 0 0 04 0 0
13 0 0 21 0 0 05 0 0
14 0 0 22 0 0 06 0 0
15 0 0 23 0 0 07 0 0
16 0 0 00 0 0 08 1615 589
17 0 0 01 0 0 09 11048 616
Monitorare l'utilizzo di banda giornaliera
Per ottenere le informazioni relative al consumo di banda giornaliero, utilizziamo l'opzione "-d"
# vnstat -d -i eth0
Ecco il risultato
eth0 / daily
day rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
03/03/2020 13,37 MiB | 1,25 MiB | 14,62 MiB | 3,36 kbit/s
------------------------+-------------+-------------+---------------
estimated 31 MiB | 2 MiB | 33 MiB |
Monitorare l'utilizzo di banda settimanale
Per ottenere le informazioni relative al consumo di banda settimanale, utilizziamo l'opzione "-w"
# vnstat -w -i eth0
Ecco il risultato
eth0 / weekly
rx | tx | total | avg. rate
---------------------------+-------------+-------------+---------------
last 7 days 13,37 MiB | 1,25 MiB | 14,62 MiB | 0,22 kbit/s
current week 13,37 MiB | 1,25 MiB | 14,62 MiB | 0,98 kbit/s
---------------------------+-------------+-------------+---------------
estimated 66 MiB | 5 MiB | 71 MiB |
Monitorare l'utilizzo di banda mensile
Per ottenere le informazioni relative al consumo di banda mensile, utilizziamo l'opzione "-m"
# vnstat -m -i eth0
Ecco il risultato
eth0 / monthly
month rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
mar '20 13,37 MiB | 1,25 MiB | 14,62 MiB | 0,58 kbit/s
------------------------+-------------+-------------+---------------
estimated 169 MiB | 13 MiB | 182 MiB |
Monitorare l'utilizzo di banda degli ultimi 10 giorni
Per ottenere le informazioni relative al consumo di banda degli ultimi 10 giorni, utilizziamo l'opzione "-t"
# vnstat -t -i eth0
Ecco il risultato, che ovviamente non riporta dati in quanto l'abbiamo installato oggi
eth0 / top 10
# day rx | tx | total | avg. rate
-----------------------------+-------------+-------------+---------------
no data available
-----------------------------+-------------+-------------+---------------
Monitorare l'utilizzo di banda in un certo intervallo di tempo
Per ottenere le informazioni relative al consumo di banda per i prossimi x secondi, con x personalizzabile, ad esempio 10 secondi, utilizziamo l'opzione "-tr":
vnstat -i eth0 -tr 10
Attendiamo 10 secondi ed ecco il risultato
576 packets sampled in 10 seconds
Traffic average for eth0
rx 30,12 kbit/s 54 packets/s
tx 3,97 kbit/s 2 packets/s
Monitorare l'utilizzo di banda in tempo reale
Per monitorare le interfacce in tempo reale, utilizziamo l'opzione "-l"
vnstat -i eth0 -l
Il risultato in tempo reale sarà
Monitoring eth0... (press CTRL-C to stop)
rx: 64 kbit/s 136 p/s tx: 0 kbit/s 0 p/s
Attendiamo qualche minuto. Poi uscire dal monitoring utilizziamo la combinazione di tast "CTRL + C", ottenendo il riepilogo
eth0 / traffic statistics
rx | tx
--------------------------------------+------------------
bytes 393 KiB | 34 KiB
--------------------------------------+------------------
max 68 kbit/s | 15 kbit/s
average 27,57 kbit/s | 2,35 kbit/s
min 6 kbit/s | 0 kbit/s
--------------------------------------+------------------
packets 5735 | 181
--------------------------------------+------------------
max 141 p/s | 6 p/s
average 50 p/s | 1 p/s
min 6 p/s | 0 p/s
--------------------------------------+------------------
time 1,90 minutes
Con il monitoraggio in tempo reale relativo al consumo di banda, abbiamo terminato.
Per l'elenco di tutte le opzioni di Vnstat si rimanda a:
# vnstat --help