How to Monitor Network Bandwidth with vnstat

There are many tools available to monitor our network bandwidth usage at a particular date and time. Those tools will collect and send the bandwidth usage to system or network admins to find out what’s going on in there network infrastructure. We have already shown you how to monitor network bandwidth using iftop tool. Well, today i have come back with a tool called vnstat.

vnStat is a console-based network traffic monitor for Linux and BSD that keeps a log of network traffic for the selected interface(s). It uses the network interface statistics provided by the kernel as information source. This means that vnstat won’t actually be sniffing any traffic and also ensures light use of system resources. However, in Linux at least a 2.2 series kernel is required.

It is very simple to install and use. It can monitor multiple network interfaces at the same time. It will display the output summary in hourly, daily, weekly and as well as monthly basis. And it can be used without root permissions.

Install vnstat

On Debian/Ubuntu:

sk@sk:~$ sudo apt-get install vnstat

On RHEL/CentOS:

vnstat will not be found in Official repositories, so add EPEL repository to install vnstat:

[root@server ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

Install vnstat with following command:

[root@server ~]# yum install vnstat -y

Usage

To view all network interfaces statistics, enter the following command:

sk@sk:~$ vnstat

This shows network bandwidth usage of all network interfaces:

rx      /      tx      /     total    /   estimated
eth1:
       Jul '13      4.77 MiB  /     204 KiB  /    4.97 MiB  /       0 KiB
       today      4.77 MiB  /     204 KiB  /    4.97 MiB  /      --    

 wlan0: Not enough data available yet.
 eth0: Not enough data available yet.

To view a particular interface bandwidth usage, enter the command:

sk@sk:~$ vnstat -i eth1

The above command will display the bandwidth usage of eth1:

Database updated: Thu Jul  4 13:26:10 2013
   eth1 since 07/04/13
          rx:  4.82 MiB      tx:  249 KiB      total:  5.07 MiB
   
monthly
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
       Jul '13      4.82 MiB |     249 KiB |    5.07 MiB |    0.13 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated        --     |      --     |      --     |

   daily
                     rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
         today      4.82 MiB |     249 KiB |    5.07 MiB |    0.86 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated        --     |      --     |      --     |

To view the hourly usage, use the parameter “-h” without quotes:

sk@sk:~$ vnstat -i eth1 -h
 eth1                                                                  13:31 
  ^                                                                      r     
  |                                                                       r     
  |                                                                       r     
  |                                                                       r     
  |                                                                       r     
  |                                                                       r     
  |                                                                       r     
  |                                                                       r     
  |                                                                       r     
  |                                                                       r     
 -+---------------------------------------------------------------------------> 
  |  14 15 16 17 18 19 20 21 22 23 00 01 02 03 04 05 06 07 08 09 10 11 12 13
h  rx (KiB)   tx (KiB)      h  rx (KiB)   tx (KiB)      h  rx (KiB)   tx (KiB) 
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          0          0
17          0          0    01          0          0    09          0          0
18          0          0    02          0          0    10          0          0
19          0          0    03          0          0    11          0          0
20          0          0    04          0          0    12          0          0
21          0          0    05          0          0    13       4964        290

To view daily usage, use the parameter “-d”:

sk@sk:~$ vnstat -i eth1 -d 

eth1  /  daily
         day         rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
      07/04/13      4.82 MiB |     249 KiB |    5.07 MiB |    0.86 kbit/s
     ------------------------+-------------+-------------+---------------
     estimated        --     |      --     |      --     |

To view weekly usage, use the parameter “-w”:

sk@sk:~$ vnstat -i eth1 -w

 eth1  /  weekly
                      rx      |     tx      |    total    |   avg. rate
   ---------------------------+-------------+-------------+---------------
    last 7 days      4.85 MiB |     290 KiB |    5.13 MiB |    0.07 kbit/s
   current week      4.85 MiB |     290 KiB |    5.13 MiB |    0.14 kbit/s
   ---------------------------+-------------+-------------+---------------
      estimated        --     |      --     |      --     |

And to view monthly usage, use “-m”:

sk@sk:~$ vnstat -i eth1 -m

 eth1  /  monthly

       month        rx      |     tx      |    total    |   avg. rate
    ------------------------+-------------+-------------+---------------
      Jul '13      4.85 MiB |     290 KiB |    5.13 MiB |    0.14 kbit/s
    ------------------------+-------------+-------------+---------------
    estimated        --     |      --     |      --     |

To see top ten network bandwidth usage of eth1:

sk@sk:~$ vnstat -i eth1 -t

To view the bandwidth usage of 5 seconds, enter the following command:

sk@sk:~$ vnstat -i eth1 -tr

To view the usage of 10 seconds, enter the following command:

sk@sk:~$ vnstat -i eth1 -tr 10

Finally to see the real live bandwidth usage of eth1:

sk@sk:~$ vnstat -i eth1 -l

This command will collect the network bandwidth usage of eth1. You can stop the process by pressing CTRL+C at any time.

Sample Output:

Monitoring eth1...    (press CTRL-C to stop)

   rx:        0 kbit/s     0 p/s          tx:        0 kbit/s     0 p/s
   rx:        0 kbit/s     0 p/s          tx:        0 kbit/s     0 p/s^C

 eth1  /  traffic statistics

                           rx         |       tx
--------------------------------------+------------------
  bytes                    17.96 MiB  |        4.48 MiB
--------------------------------------+------------------
          max            3.78 Mbit/s  |      420 kbit/s
      average           31.62 kbit/s  |     7.90 kbit/s
          min               0 kbit/s  |        0 kbit/s
--------------------------------------+------------------
  packets                      22511  |           21780
--------------------------------------+------------------
          max                336 p/s  |         206 p/s
      average                  4 p/s  |           4 p/s
          min                  0 p/s  |           0 p/s
--------------------------------------+------------------
  time                 77.55 minutes

Hope you have a basic idea about vnstat. You may wish to view graphs in cool graphical mode, well then check our article about vnStat PHP frontend tool.

Happy Monitoring!