Sui server è utile monitorare e raccogliere dati circa l’utilizzo della banda di rete, in passato ho scritto un articolo su “” Monitorare la larghezza di banda della shell di Linux ” e ho anche presentato quattro strumenti utili che è possibile utilizzare per avere un monitoraggio in tempo reale della banda:
IPTState : un’interfaccia simile a Top collegata alla vostra tabella connection-tracking di netfilter.
Utilizzando iptstate si può guardare in modo interattivo il traffico che attraversa il proprio firewall netfilter/iptables , ordinato per vari criteri, è possibile limitare la visualizzazione con vari criteri. Ma non si ferma qui: a partire dalla versione 2.2.0 è possibile anche cancellare gli stati dalla tabella.
pktstat : visualizza un elenco in tempo reale delle connessioni attive viste su una interfaccia di rete specifica, e quanta banda viene utilizzata. Parzialmente decodifica i protocolli HTTP e FTP per mostrare il nome del file che viene trasferito. Anche i nomi delle applicazioni X11 sono mostrate.
NetHogs un piccolo strumento tipo ‘top di rete’. Invece che “spacchettare” il traffico verso il “basso” per protocollo o per sottorete, come la maggior parte degli strumenti fanno, mostra la banda utilizzata dai vari programmi. NetHogs non si basa su un modulo del kernel speciale da caricare. Se c’è ad un tratto molto traffico di rete, si può lanciare subito NetHogs e vedere immediatamente quale PID è la causa. Questo rende facile individuare i programmi che sono impazziti e stanno improvvisamente prendendo tutta la vostra banda di rete.
IPTraf un programma che raccoglie statistiche di rete per Linux ed è usufruibile da console. Raccoglie una serie di dati come i pacchetti delle connessioni TCP ed il conteggio dei byte, le statistiche sulle interfaccie e gli indicatori di attività, dati TCP/UDP sul traffico, e traffico per LAN.
Sono tutti buoni strumenti e suggerisco di leggere i miei vecchi articoli per avere una piccola introduzione su di essi, oggi voglio mostrarvi invece vnstat
, questo piccolo programma ha qualcosa in più degli altri, può mostrare statistiche in tempo reale, ma la caratteristica dove brilla questo piccolo programma è la sua capacità di raccogliere dati su un lungo periodo di tempo.
vnstat
è un monitor di traffico di rete basata su console per Linux e BSD che mantiene un log del traffico di rete per l’interfaccia selezionata(e). Utilizza le statistiche dell’interfaccia di rete fornite dal kernel come fonte di informazioni. Ciò significa che vnstat non sta effettivamente sniffando il traffico e assicura anche un basso impatto sull’uso delle risorse di sistema. In Linux, è richiesto almeno un kernel della serie 2.2, che vuol dire che tutti dovrebbero essere in grado di utilizzare questo piccolo programma.
Il programma è open source/GPL e può essere utilizzato sia come root che come utente non privilegiato.
installazione
Ho fatto i miei test su un server Debian, per questa distribuzione è possibile installare il pacchetto disponibile dal repository principale semplicemente con il comando (come root):
apt-get install vnstat |
Un pacchetto per questo software dovrebbe essere presente in tutti i repository delle principali distribuzioni, quindi probabilmente è possibile installarlo con il vostro gestore di pacchetti (pacman, yaourt, emerge, yum).
Primo setup
Durante la prima esecuzione è necessario inizializzare ogni interfaccia che deve essere registrata su vnStat. Ad esempio per una interfaccia cablata con cavo di rete è necessario utilizzare il comando:
# vnstat -u -i eth0 |
o per una interfaccia wireless:
# vnstat -u -i wlan0 |
Quando si inizializza una interfaccia per la prima volta ci sarà un messaggio di errore che stamperà ‘unable to read database’. Se questo messaggio è seguito da un messaggio di informazioni che dice ‘a new database has been created’ l’interfaccia è stata aggiunta con successo.
Se questo non accade verificare che l’interfaccia specificata sia valida.
Per vedere tutte le interfacce del vostro sistema Linux, è possibile utilizzare il comando
ip link show |
Nota : Ho provato questo software anche su Ubuntu ed alla fine dell’installazione di vnstat ho avuto il messaggio:
* Starting vnStat daemon vnstatd Zero database found, adding available interfaces... "eth0" added, 100 Mbit bandwidth limit. "wlan0" added, 100 Mbit bandwidth limit. -> 2 interfaces added. Limits can be modified using the configuration file. |
Quindi, se si vede qualcosa di simile si può saltare l’inizializzazione delle interfacce e la creazione di un metodo di aggiornamento.
Metodo di Aggiornamento
Dopo aver inizializzato le interfaccie impostare uno dei metodi di aggiornamento.
Attenzione: utilizzare solo uno dei metodi, non entrambi allo stesso tempo!
Cron
Il primo metodo utilizza Cron. Creare /etc/cron.d/vnstat con il seguente contenuto:
0-55/5 * * * * if [ -x /usr/bin/vnstat ] && [ `ls /var/lib/vnstat/ | wc -l` -ge 1 ]; then /usr/bin/vnstat -u; fi |
Questo presuppone che vnStat sia installato in /usr/ e presuppone anche che /etc/cron.d sia una directory per i cron di sistema (che è il valore predefinito per la maggior parte delle distribuzioni Linux).
Servizio
Il secondo modo è usare vnstatd un programma che raccoglie tutte le informazioni e che viene eseguito come demone, su Debian è possibile avviarlo con
#/etc/init.d/vnstat start |
Se usate systemd allora utilizzate:
# systemctl start vnstat.service |
Uso Base
L’uso base del programma è vnstat -i nomeinterfaccia
, su un sistema in cui si è appena installato si dovrebbe vedere qualcosa di simile a:
root@server:# vnstat -i venet0 Database updated: Sat Jul 6 08:48:26 2013 venet0 since 07/06/13 rx: 16 KiB tx: 26 KiB total: 42 KiB monthly rx | tx | total | avg. rate ------------------------+-------------+-------------+--------------- Jul '13 16 KiB | 26 KiB | 42 KiB | 0.00 kbit/s ------------------------+-------------+-------------+--------------- estimated -- | -- | -- | daily rx | tx | total | avg. rate ------------------------+-------------+-------------+--------------- today 16 KiB | 26 KiB | 42 KiB | 0.01 kbit/s ------------------------+-------------+-------------+--------------- estimated -- | -- | -- | |
Non è così interessante, forse?
Beh, quando avrete vnstat in esecuzione per un certo tempo si avranno MOLTE più informazioni
$ vnstat -i eth1 Database updated: Sat Aug 1 22:50:01 2009 eth1 since 11/20/08 rx: 3.32 TiB tx: 2.81 TiB total: 6.13 TiB monthly rx | tx | total | avg. rate ------------------------+-------------+-------------+--------------- Jul '09 609.40 GiB | 282.21 GiB | 891.61 GiB | 2.79 Mbit/s Aug '09 16.95 GiB | 10.46 GiB | 27.40 GiB | 2.80 Mbit/s ------------------------+-------------+-------------+--------------- estimated 552.14 GiB | 340.70 GiB | 892.83 GiB | daily rx | tx | total | avg. rate ------------------------+-------------+-------------+--------------- yesterday 19.19 GiB | 8.63 GiB | 27.82 GiB | 2.70 Mbit/s today 16.95 GiB | 10.46 GiB | 27.40 GiB | 2.80 Mbit/s ------------------------+-------------+-------------+--------------- estimated 17.81 GiB | 10.99 GiB | 28.80 GiB | |
Come si può vedere si ha un piccolo report che mostra l’utilizzo totale della banda di rete in tempo reale (il primo blocco) di questo mese ed il precedente, e l’utilizzo totale della larghezza di banda di oggi e di ieri, questo è molto più interessante di sicuro.
Con l’opzione-h è possibile ottenere un rapporto orario nelle ultime 24h.
root@server:# vnstat -h -i eth1 eth1 21:25 ^ r | r | r r | r r r | t r r r t | rt r r r r t t | rt r r r r t t | rt r r t r r r t t | rt r rt t r r r rt rt t rt rt t | rt rt rt rt rt r rt r r r r r rt rt rt rt rt rt rt t -+---------------------------------------------------------------------------> | 22 23 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 h rx (KiB) tx (KiB) h rx (KiB) tx (KiB) h rx (KiB) tx (KiB) 22 250,801 205,825 06 100,529 49,054 14 205,356 157,877 23 705,144 885,844 07 52,806 44,130 15 258,228 226,265 00 928,792 224,789 08 52,298 45,230 16 1,028,043 343,843 01 1,271,180 292,260 09 70,396 61,719 17 755,804 293,309 02 212,296 186,481 10 155,502 72,451 18 235,691 284,886 03 165,931 91,943 11 266,673 92,497 19 275,554 658,386 04 150,997 437,071 12 392,244 122,185 20 307,819 850,813 05 180,170 56,391 13 133,829 120,555 21 117,474 292,787
Oppure, se volete solo vedere le statistiche in tempo reale è possibile utilizzare l’opzione -l, statistiche saranno visualizzate dopo l’interruzione se il runtime è stato più di 10 secondi.
root@server:# vnstat -l -i eth0 Monitoring eth0... (press CTRL-C to stop) rx: 0 kbit/s 1 p/s tx: 4 kbit/s 2 p/s eth0 / traffic statistics rx | tx --------------------------------------+------------------ bytes 21 KiB | 36 KiB --------------------------------------+------------------ max 60 kbit/s | 72 kbit/s average 3.36 kbit/s | 5.76 kbit/s min 0 kbit/s | 0 kbit/s --------------------------------------+------------------ packets 262 | 272 --------------------------------------+------------------ max 94 p/s | 94 p/s average 5 p/s | 5 p/s min 0 p/s | 0 p/s --------------------------------------+------------------ time 50 seconds
Output Grafico
Nelle ultime versioni è presente una nuova opzione per generare immagini.
Si creano le immagini con il comando vnstati
. Dal link:
Descrizione
Lo scopo di vnstati è quello di fornire un supporto grafico come output per le statistiche raccolte tramite vnstat. Il formato del file immagine è limitato al .png. Tutti gli output di base di vnStat sono supportati escluso il traffico in tempo reale. L’immagine può essere mandata sia da un file o su standard output.
Esempi
vnstati -s -i eth0 -o /tmp/vnstat.png
Stampa una sintesi del traffico in uscita per l’interfaccia eth0 su file /tmp/vnstat.png
.
vnstati -vs -i eth0+eth1+eth2 -o /tmp/vnstat.png
Output traffic summary with hourly data under the normal summary for a merge of interfaces eth0, eth1 and eth2 to file /tmp/vnstat.png
.
This is an example of the images this command will produce:
Stampa una sintesi del traffico in uscita con i dati orari sotto la sintesi normale con una unione delle interfacce eth0, eth1 e eth2 su file /tmp/vnstat.png
.
Questo è un esempio delle immagini che questo comando produrrà:
Or as alternative you can use a php frontend: vnstat PHP frontend, the script requires a working PHP setup with GD image libraries. Also vnStat must be properly installed and collecting data.
Oppure, in alternativa è possibile utilizzare PHP frontend per vnstat, allo script è necessario un PHP funzionante con il supporto alle librerie di immagini GD. Anche vnStat deve essere installato correttamente per la raccolta dei dati.
Popular Posts:
- None Found
Thank you Riccardo Capecchi for writing articles on CLI applications. Modern GUIs really have made me appreciate the visual simplicity of CLI apps while being direct and to the point.
I am using your articles to collect a list of CLI apps. I am writing/supporting a CLI app menu project because there is nothing to help newbies to know what CLI apps are out there. My project is currently at https://raw.github.com/rdchin/CLI-app-menu/stable/cli-app-menu.sh.
Keep writing and thanks!
I modified vnstat program to allow for adding initial value to the counter so that you can add the month’s usage prior to starting vnstatd in order to match with your ISP data counter. If anyone is interested let me know.
Is there anyway to differentiate traffic based on destination IP address?
For example, running vnstat on a server in your LAN. How would you differentiate WAN traffic when using eth0 for both purposes.