干货日志

记录和分享技术成长的脚步

利用vnstat监控网站服务器流量

目录
[隐藏]

1.概述

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

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

2.安装

2.1.编译安装

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

首先从官网下载vnstat最新版本。

wget https://humdi.net/vnstat/vnstat-1.11.tar.gz

然后解压进入安装目录。

tar xvzf vnstat-1.11.tar.gz
cd vnstat-1.11

接下来就是编译安装。

make && make install

如果CentOS提示make报错可以用yum安装一下。

《利用vnstat监控网站服务器流量》

2.2.源码安装

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

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

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

CentOS/RedHat 5.x 32位

wget http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rpm -Uvh epel-release-5-4.noarch.rpm

CentOS/RedHat 5.x 64位

wget http://download.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
rpm -Uvh epel-release-5-4.noarch.rpm

CentOS/RedHat 6.x 32位

wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm

CentOS/RedHat 6.x 64位

wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh epel-release-6-8.noarch.rpm

安装完第三方软件源以后就可以yum安装vnstat。

yum -y install vnstat

3.使用

推荐大家先执行help命令来查询详细的使用方法。

vnstat --help

《利用vnstat监控网站服务器流量》

3.1.配置

先输入以下命令查看自己的网卡号。

ifconfig

一般来说OVZ的网卡应该是venet0,而Xen和Kvm的应该是eth0,有了这个网卡号我们才能够让vnstat开始正常工作。

我这里是OVZ的机器,所以我要执行以下命令来配置数据库。

vnstat -u -i venet0

如果是其他的虚拟类型则输入

vnstat -u -i eth0

接下来就要配置vnstat自动工作了,我们来配置自动更新数据库。

vi /etc/cron.d/vnstat

在配置文件中可以修改数据库更新的频率,推荐5分钟。

*/5 * * * *  vnstat /usr/sbin/vnstat.cron

如果使用yum安装的,系统一直没有显示正常使用,需要启动vnstat的守护服务:

vnstatd -d

另外还需要添加服务和守护进程,并执行开机启动。
服务项作者帮我们写好了,我们只需要下载就可以了。

cd /etc/init.d
wget https://humdi.net/vnstat/init.d/redhat/vnstat
chmod +x vnstat
chkconfig --add vnstat
chkconfig vnstat on

最后重启服务。

service vnstat restart

如果大家使用的是非OVZ的机器那么现在就开始正常工作了,如果是OVZ的机器要需要修改一些地方,否则运行的时候会报错。

1、

vi /etc/sysconfig/vnstat

把其中的

VNSTAT_OPTIONS="-u -i eth0"

修改为

VNSTAT_OPTIONS="-u -i venet0"

2、

vi /etc/vnstat.conf

把其中的

# default interface
Interface "eth0"

修改为

# default interface
Interface "venet0"

《利用vnstat监控网站服务器流量》

3.2.查询

配置好了要隔上几分钟程序已经统计完结果了我们就可以执行查询命令了。

vnstat -h     #按小时查询
vnstat -d     #按天数查询
vnstat -m    #按月数查询
vnstat -w    #按周数查询
vnstat -t      #查询TOP10
vnstat -h -i venet0  #按小时查询网卡venet0

查询实时流量

OVZ

vnstat -l -i venet0 -ru

Xen/Kvm

vnstat -l -i eth0 -ru

计算平均值

vnstat -tr 10 -ru  #计算10秒的平均值,默认为5秒

《利用vnstat监控网站服务器流量》

3.3.网页输出

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

在本服务器网站输入的文件夹中执行以下命令:

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

这样就可以通过访问vnstat的文件夹来进行查看了。

需要注意的是,这里还需要修改下配置文件,把语言改成英文的,软件执行路径,网页绘图方式

cd vnstat
vi config.php
$locale = ‘en_US.UTF-8′;
$language = ‘en’;
$vnstat_bin = ‘/usr/bin/vnstat’;
$data_dir = ‘/var/lib/vnstat/’;
$graph_format=’png’;

OVZ的用户还需要修改网卡类型。

 $iface_list = array('venet0');
$iface_title['venet0'] = 'Internal';

当然,有兴趣的还可以自己汉化一下。

《利用vnstat监控网站服务器流量》

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

4.总结

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

  1. 无纯洁说道:

    技术文,学习了...

  2. 要是可以用vpn结合就好了。

    1. Nicky说道:

      嗯,其实只要能检测到帐号绑定就没问题了

免费资源部落进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据