//home | tags | archives | about | grosu.nl | eulinux.org | RSS Feed

Using vnstat for simple traffic accounting

floyd - Sat 22 November 2008 - network, linux

vnStat is a network traffic monitor for Linux that keeps a log of daily network traffic for the selected interface(s). vnStat isn't a packet sniffer. The traffic information is analyzed from the /proc vfs, so vnStat can be used without root permissions. However at least a 2.2.x kernel is required.

Quick install guide (I have set it up on a Slackware 10.0 box):

[user@host] $  wget http://humdi.net/vnstat/vnstat-1.4.tar.gz
[user@host] $  tar zxvf vnstat-1.4.tar.gz
[user@host] $  cd vnstat-1.4
[user@host] $  make
[user@host] $ su
[root@host] # checkinstall 
# (or "make install" on most systems)
#create databases for NICs
[root@host] # vnstat -u -i eth0
[root@host] # vnstat -u -i eth1
[root@host] # crontab -e

Add the following entry in the crontab:

*/5 * * * * /usr/bin/vnstat -u

Install the frontend:

[root@host] # cd /var/www/htdocs
[root@host] # wget -O vnstat_php_frontend-1.3.tar.gz http://www.sqweek.com/sqweek/files/vnstat_php_frontend-1.3.tar.gz
[root@host] # tar zxvf vnstat_php_frontend-1.3.tar.gz
[root@host] # mv vnstat_php_frontend-1.3 vnstat

Edit vnstat/config.php and adjust the following lines to your preference:

$iface_list = array('eth0', 'eth1');
$iface_title['eth0'] = 'Extern';
$iface_title['eth1'] = 'Intern';
$vnstat_bin = '/usr/bin/vnstat';

That's all, assuming apache is properly configured with php enabled, you can access the interface at http://your-domain.com/vnstat/
Remember to protect it with some http authentication if you don't want the whole world to be able to access it :)

Btw, here's a screenshot: