Enter your email address:

Delivered by FeedBurner

vnstat - Command Line Tool to check how much bandwidth you use


StumbleUpon Toolbar

It is always useful to know how much bandwidth you are using, also to check if your provider is honoring the contract you signed with them.

At my office I have installed Cacti and as I have a layer 3 SNMP capable switch, I can graph the bandwidth that all my office's PCs uses, and also the main pipe to the Internet (My ADSL connection), but at home, I do not have such an expensive switch (and I do not need it), and my ADSL modem is not SNMP capable, so Cacti is not a solution, but with Linux Operating System there is always a solution, and the one for this kind of problem is vnstat.

To install it run:

sudo aptitude install vnstat

Then you need to initialize the database, and add a cronjob task, but it is easy and automatic. First determine the name of your NIC or NICs for that run:

sudo ifconfig

My output is:

eth2      Link encap:Ethernet  HWaddr 00:19:d1:ea:e6:3f  
          inet addr:10.87.58.2  Bcast:10.87.58.7  Mask:255.255.255.248
          inet6 addr: fe80::219:d1ff:feea:e63f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:55660 errors:0 dropped:0 overruns:0 frame:0
          TX packets:47538 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100 
          RX bytes:66480203 (63.4 MiB)  TX bytes:5316732 (5.0 MiB)
          Base address:0x20c0 Memory:92200000-92220000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:66740 errors:0 dropped:0 overruns:0 frame:0
          TX packets:66740 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:64959780 (61.9 MiB)  TX bytes:64959780 (61.9 MiB)

As you can see, my unique interface is called eth2 so I need to run:

vnstat -u -i eth2

This will initiate the database, and add one script called /etc/cron.d/vnstat, containing this line:

# /etc/cron.d/vnstat: crontab entries for the vnstat package

0-55/5 *        * * *   root    if [ -x /usr/bin/vnstat ] && [ `ls /var/lib/vnstat/ | wc -l` -ge 1 ]; then /usr/bin/vnstat -u; fi

So, now you just need to wait until the database populate with data, after a while you can run some of these commands:

vnstat -h

And will show an hourly graph like this:

 eth2                                                                     10:10 
  ^                                                                    r        
  |                                                                    r        
  |                                                                    r        
  |                                                                    r        
  |                                                                    r        
  |                                                                    r  r     
  |                                                                    r  r     
  |                                                                    r  r     
  |                                                                    r  r     
  |                                                                    r  r     
 -+---------------------------------------------------------------------------> 
  |  11 12 13 14 15 16 17 18 19 20 21 22 23 00 01 02 03 04 05 06 07 08 09 10    
                                                                                
 h   rx (kB)    tx (kB)      h   rx (kB)    tx (kB)      h   rx (kB)    tx (kB) 
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          0          0
17          0          0    01          0          0    09      31947       1798
18          0          0    02          0          0    10      16201        772

or:

vnstat -d

And you will get a daily graph like this:

 eth2  /  daily

    day         rx      |     tx      |  total
------------------------+-------------+----------------------------------------
   13.05.     47.02 MB  |    2.51 MB  |   49.53 MB   %%%%%%%%%%%%%%%%%%%%%%%%:
------------------------+-------------+----------------------------------------
 estimated      110 MB  |       4 MB  |     114 MB

As I do not have enough data, my graphs are a little bit boring. You can read the man page to explore other options.

Trackback URL for this post:

http://www.go2linux.org/trackback/483
StumbleUpon Toolbar

 If you like this article, subscribe to our full rss

If this article was somehow useful for you, you can leave something in the tip's jar

Please post your question in our forum and use comments only to leave your comments about the article, thanks.

Thanks ! That's great tool ,

Thanks ! That's great tool , i was searching for something like that . There is also vnstat PHP frontend right here : http://www.sqweek.com/sqweek/index.php?p=1

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

More information about formatting options

Captcha
This question is for testing whether you are a human visitor and to prevent automated spam submissions.

This site is proudly hosted at Bluefur Hosting