Keep track of your bandwidth usage using vnstat on Ubuntu
I have already covered My User Experience with Reliance Netconnect – Broadband+ service and Ubuntu 9.04. Now as i said in previous article it’s very hard to track bandwidth usage with Reliance Netconnect – Broadband+ service using on-line facility Reliance Mycare. I don’t have any single word to praise that service. We all know the Reliance Netconnect – Broadband+ service is not offering any unlimited bandwidth usage package. So INTERNET savvy should keep track their bandwidth usage or else you would be jump in 5 digit monthly bill (Imagine @ 2 INR / MB). Which nobody can afford. I have 10 GB Day + 10 GB Night plan.
So, here is my way to keep track of bandwidth usage using vnstat in Ubuntu.
Q. What is vnstat?
A. vnStat is a console-based network traffic monitor for Linux and BSD that keeps a log of network traffic for the selected
interface(s).
Simply install the vnstat from Ubuntu repository with you favorite installation method ( synaptic / aptitude / apt-get / …). I am apt-get fan.
person@CANONICALDESK:~$ sudo apt-get install vnstat
Now, as i said i want to keep track of bandwidth usage of my Reliance Netconnect Broadband+ service. Which is always running to ‘ppp0′ interface. So first create the database of ‘ppp0′ for vnstat.
person@CANONICALDESK:~$ sudo vnstat -u -i ppp0 Error: Unable to read database "/var/lib/vnstat/ppp0". -> A new database has been created. person@CANONICALDESK:~$
You can also discover more option using “vnstat -h”. Now every five minutes vnstat will run through cron to track the detail usage of bandwidth (TX + RX @ ppp0). I am not sure when i am going to shutdown / hibernate / sleep my machine. Still i want as much accurate result as i can. Because of that i have decreased the default 5 minutes schedule time to 1 minute for vnstat. Here is my modified vnstat cron script.
person@CANONICALDESK:~$ cat /etc/cron.d/vnstat # /etc/cron.d/vnstat: crontab entries for the vnstat package * * * * * root if [ -x /usr/bin/vnstat ] && [ `ls /var/lib/vnstat/ | wc -l` -ge 1 ]; then /usr/bin/vnstat -u; fi person@CANONICALDESK:~$
Time to take reports. We can also check / compare bandwidth usage with Reliance Mycare on-line report, which never generated for me
Monthly Rport:
person@CANONICALDESK:~$ vnstat -i ppp0 -m ppp0 / monthly month rx | tx | total -------------------------+--------------+-------------------------------------- Jul '09 1.00 GB | 63.47 MB | 1.06 GB %%%%%%%%%%%%%%%%%%%%%: -------------------------+--------------+-------------------------------------- estimated 2.69 GB | 169 MB | 2.85 GB person@CANONICALDESK:~$
Weekly Report:
person@CANONICALDESK:~$ vnstat -i ppp0 -w ppp0 / weekly rx | tx | total ----------------------------+---------------+-------------- last 7 days 418.01 MB | 39.00 MB | 457.01 MB last week 606.37 MB | 24.46 MB | 630.83 MB current week 418.01 MB | 39.00 MB | 457.01 MB ----------------------------+---------------+-------------- estimated 447 MB | 41 MB | 488 MB person@CANONICALDESK:~$
Daily Report:
person@CANONICALDESK:~$ vnstat -i ppp0 -d
ppp0 / daily
day rx | tx | total
------------------------+-------------+----------------------------------------
03.07. 251.93 MB | 11.99 MB | 263.92 MB %%%%%%%%%%%%%%%%:
04.07. 354.43 MB | 12.48 MB | 366.91 MB %%%%%%%%%%%%%%%%%%%%%%%%:
09.07. 140.25 MB | 19.11 MB | 159.36 MB %%%%%%%%%:
10.07. 60.12 MB | 10.25 MB | 70.37 MB %%%:
11.07. 148.81 MB | 6.27 MB | 155.08 MB %%%%%%%%%%
12.07. 68.83 MB | 3.39 MB | 72.22 MB %%%%
------------------------+-------------+----------------------------------------
estimated 124 MB | 5 MB | 129 MB
person@CANONICALDESK:~$
Hourly Report:
person@CANONICALDESK:~$ vnstat -i ppp0 -h
ppp0 13:09
^ 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 (kB) tx (kB) h rx (kB) tx (kB) h rx (kB) tx (kB)
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 70595 3506
21 0 0 05 0 0 13 311 108
person@CANONICALDESK:~$
I think above reports are sufficient to make argument against unfair bill right
. There is also web base support for this application. Please do “Google” for more information.
Update:
If you want to stick with latest version of vnstat. Then please follow this



Hi Hardik
I’ve just installed vnstat in ubuntu, and it seems to work fine; what is not clear to me yet is: say that vnstat runs in cron (default 5 minutes), and after 4 minutes the connection is lost (or disconnected), will the traffic in that 4 minutes be lost (i.e., not registered by vnstat)?
thanks in advance
Lorenzo
Hi Lore,
I had same question. But then i have changed my /etc/cron.d/vnstat
script to run at every one minute.
person@CANONICALDESK:~$ cat /etc/cron.d/vnstat
# /etc/cron.d/vnstat: crontab entries for the vnstat package
* * * * * root if [ -x /usr/bin/vnstat ] && [ `ls /var/lib/vnstat/ | wc
-l` -ge 1 ]; then /usr/bin/vnstat -u; fi
person@CANONICALDESK:~$
Here is my log from /var/log/syslog:
Sep 4 13:40:01 CANONICALDESK /USR/SBIN/CRON[18331]: (root) CMD (if [ -x
/usr/bin/vnstat ] && [ `ls /var/lib/vnstat/ | wc -l` -ge 1 ]; then
/usr/bin/vnstat -u; fi)
Sep 4 13:41:01 CANONICALDESK /USR/SBIN/CRON[18541]: (root) CMD (if [ -x
/usr/bin/vnstat ] && [ `ls /var/lib/vnstat/ | wc -l` -ge 1 ]; then
/usr/bin/vnstat -u; fi)
Sep 4 13:42:01 CANONICALDESK /USR/SBIN/CRON[18584]: (root) CMD (if [ -x
/usr/bin/vnstat ] && [ `ls /var/lib/vnstat/ | wc -l` -ge 1 ]; then
/usr/bin/vnstat -u; fi)
Any, Yes you will lost your traffic. because it will not update your
database in /var/lib/vnstat directory
person@CANONICALDESK:~$ ls -l /var/lib/vnstat/
total 12
-rw-r–r– 1 root root 2272 2009-09-04 13:44 eth0
-rw-r–r– 1 root root 2272 2009-09-04 13:44 ppp0
-rw-r–r– 1 root root 2272 2009-09-03 11:35 wlan0
person@CANONICALDESK:~$
Note: Next version of vnstat may take care of such things (That is not
available in Ubuntu Jaunty (9.04) repository). It will give deamon mode
support with vnstat.conf [1] configuration file. It have token facility
(UpdateInterval = How often in seconds the interface data is updated).
Check more on official site [2].
[1] http://humdi.net/vnstat/man/vnstat.conf.html
[2] http://humdi.net/vnstat/
Hardik, thanks for publishing the link to my post as an update
vnstat really rocks!
Thx for this post. This tool is really easy to set up and use.
Thanks for the post..really useful.