概述

我新建了一个网站服务器,虽然有网站统计代码可以统计网站的IP和PV,但是对于网站每天每个小时用了多少流量我却不知道,不可能我每天盯着服务器的后台控制面板看吧?vnstat这个小程序帮了我的大忙。

vnstat是一个基于命令行的Linux系统流量监控工具。vnstat的官方网站,官网最新版本是1.11。vnstat不是根据IP来进行统计的,而是根据我们的网卡来进行统计的。注意本人只讨论单个网卡的情况,如果大家是多个网卡可以自己添加统计。

安装

编译安装

编译安装可以用于任何Linux操作系统。

首先从官网下载vnstat最新版本。
[code lang="bash"]wget https://humdi.net/vnstat/vnstat-1.11.tar.gz[/code]
然后解压进入安装目录。
[code lang="bash"]tar xvzf vnstat-1.11.tar.gz
cd vnstat-1.11[/code]
接下来就是编译安装。
[code lang="bash"]make && make install[/code]
如果CentOS提示make报错可以用yum安装一下。

源码安装

其实我主要推荐源码安装,因为我发现源码安装出来比官网的版本要新。

CentOS要先安装第三方软件源(其他一些非CentOS/RedHat官方出品的软件就可以通过这个安装。)

注意以下命令请按照自己的Linux版本安装,切勿全部安装。

CentOS/RedHat 5.x 32位
[code lang="bash"]wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -Uvh epel-release-5-4.noarch.rpm[/code]
CentOS/RedHat 5.x 64位
[code lang="bash"]wget http://download.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm -Uvh epel-release-5-4.noarch.rpm[/code]
CentOS/RedHat 6.x 32位
[code lang="bash"]wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm[/code]
CentOS/RedHat 6.x 64位
[code lang="bash"]wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm[/code]
安装完第三方软件源以后就可以yum安装vnstat。
[code lang="bash"]yum -y install vnstat[/code]

使用

推荐大家先执行help命令来查询详细的使用方法。
[code lang="bash"]vnstat --help[/code]

配置

先输入以下命令查看自己的网卡号。
[code lang="bash"]ifconfig[/code]
一般来说OVZ的网卡应该是venet0,而Xen和Kvm的应该是eth0,有了这个网卡号我们才能够让vnstat开始正常工作。

我这里是OVZ的机器,所以我要执行以下命令来配置数据库。
[code lang="bash"]vnstat -u -i venet0[/code]
如果是其他的虚拟类型则输入
[code lang="bash"]vnstat -u -i eth0[/code]
接下来就要配置vnstat自动工作了,我们来配置自动更新数据库。
[code lang="bash"]vi /etc/cron.d/vnstat[/code]
在配置文件中可以修改数据库更新的频率,推荐5分钟。
[code lang="bash"]*/5 * * * * vnstat /usr/sbin/vnstat.cron[/code]
如果使用yum安装的,系统一直没有显示正常使用,需要启动vnstat的守护服务:
[code lang="bash"]vnstatd -d[/code]
另外还需要添加服务和守护进程,并执行开机启动。
服务项作者帮我们写好了,我们只需要下载就可以了。
[code lang="bash"]cd /etc/init.d
wget https://humdi.net/vnstat/init.d/redhat/vnstat
chmod +x vnstat
chkconfig --add vnstat
chkconfig vnstat on[/code]
最后重启服务。
[code lang="bash"]service vnstat restart[/code]
如果大家使用的是非OVZ的机器那么现在就开始正常工作了,如果是OVZ的机器要需要修改一些地方,否则运行的时候会报错。

1、
[code lang="bash"]vi /etc/sysconfig/vnstat[/code]
把其中的
[code lang="bash"]VNSTAT_OPTIONS="-u -i eth0"[/code]
修改为
[code lang="bash"]VNSTAT_OPTIONS="-u -i venet0"[/code]
2、
[code lang="bash"]vi /etc/vnstat.conf[/code]
把其中的
[code lang="bash"]# default interface
Interface "eth0"[/code]
修改为
[code lang="bash"]# default interface
Interface "venet0"[/code]

查询

配置好了要隔上几分钟程序已经统计完结果了我们就可以执行查询命令了。
[code lang="bash"]vnstat -h #按小时查询
vnstat -d #按天数查询
vnstat -m #按月数查询
vnstat -w #按周数查询
vnstat -t #查询TOP10
vnstat -h -i venet0 #按小时查询网卡venet0[/code]
查询实时流量

OVZ
[code lang="bash"]vnstat -l -i venet0 -ru[/code]
Xen/Kvm
[code lang="bash"]vnstat -l -i eth0 -ru[/code]
计算平均值
[code lang="bash"]vnstat -tr 10 -ru #计算10秒的平均值,默认为5秒[/code]

网页输出

仅仅通过终端窗口查询也不方便,我们可以通过一段PHP程序来进行访问。

在本服务器网站输入的文件夹中执行以下命令:
[code lang="bash"]wget http://www.sqweek.com/sqweek/files/vnstat_php_frontend-1.5.1.tar.gz
tar zxvf vnstat_php_frontend-1.5.1.tar.gz
mv vnstat_php_frontend-1.5.1 vnstat[/code]
这样就可以通过访问vnstat的文件夹来进行查看了。

需要注意的是,这里还需要修改下配置文件,把语言改成英文的,软件执行路径,网页绘图方式
[code lang="bash"]cd vnstat
vi config.php[/code]
[code lang="bash"]$locale = ‘en_US.UTF-8′;
$language = ‘en’;[/code]
[code lang="bash"]$vnstat_bin = ‘/usr/bin/vnstat’;
$data_dir = ‘/var/lib/vnstat/’;[/code]
[code lang="bash"]$graph_format=’png’;[/code]
OVZ的用户还需要修改网卡类型。
[code lang="bash"] $iface_list = array('venet0');
$iface_title['venet0'] = 'Internal';[/code]
当然,有兴趣的还可以自己汉化一下。

2018-12-4添加

1、在实际运行中发现,如果使用军哥的lnmp安装包进行解析的话,发现是有php 扩展的问题,要先把php.ini中的?popen参数从禁用参数中删除,否则会导致CPU占用率过高出现500或是502错误。

2、在老版本中,可以通过vnstat --dumpdb方式输入统计数据库,但是作者最新的版本2.0中已经使用sqlite3数据库保存流量数据了,可以使用--xml[mode] [limit]或是--json [mode] [limit]输入统计参数。
3、网站最新版本可以使用https://humdi.net/vnstat/vnstat-latest.tar.gz链接下载,作者的Github文章地址是https://github.com/vergoh/vnstat

总结

vnStat并不能完全算是一个正规的监控流量的工具,虽然提供了一定的功能,但是还是过于单一了,但是对于一般的需要是足够了,如果有更多需求的朋友应该找更强大的流量监控工具

最后修改:2022 年 05 月 23 日
如果觉得我的文章对你有用,请随意赞赏