安装vnstat
apt-get install vnstat
#yum install vnstat
创建一个数据库
vnstat -u -i eth0
使用
首先如果你的网卡名字不是叫eth0的那么修改/etc/vnstat.conf这个文件
里面有一个选项Interface "eth0"改成你的网卡名字就好了
接着给这个网卡创建一个数据库来存放监控数据
[root@vultr etc]# vnstat -u -i eth0
Error: Unable to read database "/var/lib/vnstat/eth0".
Info: -> A new database has been created.
这个是权限问题,修改eth0这个文件的权限就好了
chown vnstat:vnstat eth0
之后重新创建数据库
vnstat -u -i eth0
重启一下vnstat的服务
service vnstat restart
一些常用参数
vnstat -l - 查看当前实时流量
root@2c4l:~# vnstat -l
Monitoring venet0... (press CTRL-C to stop)
rx: 6 kbit/s 13 p/s tx: 13 kbit/s 20 p/s^C
venet0 / traffic statistics
rx | tx
--------------------------------------+------------------
bytes 9 KiB | 19 KiB
--------------------------------------+------------------
max 10 kbit/s | 20 kbit/s
average 7.31 kbit/s | 15.39 kbit/s
min 6 kbit/s | 12 kbit/s
--------------------------------------+------------------
packets 162 | 223
--------------------------------------+------------------
max 22 p/s | 27 p/s
average 16 p/s | 22 p/s
min 13 p/s | 18 p/s
--------------------------------------+------------------
time 10 seconds
vnstat -d - 查看当天流量
root@2c4l:~# vnstat -d
venet0 / daily
day rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
08/26/19 430 KiB | 857 KiB | 1.26 MiB | 0.18 kbit/s
------------------------+-------------+-------------+---------------
estimated -- | -- | -- |
vnstat -m - 查看当月流量
root@2c4l:~# vnstat -m
venet0 / monthly
month rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
Aug '19 430 KiB | 857 KiB | 1.26 MiB | 0.00 kbit/s
------------------------+-------------+-------------+---------------
estimated -- | -- | -- |
下载vnstat PHP frontend 解压缩挂到web服务器上对config.php做一下简单的配置(语言什么的)即可使用
http://www.sqweek.com/sqweek/index.php?p=1
解压文件夹改名为vnstat,然后上传到某个网站根目录下,这样就可以以http://www.mydomain.com/vnstat 来访问到,就出来页面了,但此时没有数据,因为还要使系统生成数据。
建立流量数据库:
ifconfig 指令查看需要监控的网卡,假设只有eth0
然后生成数据库:
/usr/local/bin/vnstat -u -i eth0
然后定时更新数据库,通过cron的方式:
实际上在安装vnstat时,已经在系统里安装好了vnstat的cron,crontab内容在/etc/cron.d/vnstat
内容为:
# /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
0-55/5 * * * * root /usr/bin/vnstat –dumpdb -i eth0 >/data/vnstat/vnstat_dump_eth0
第一行为安装时自动指定的.
第二行是为了更新eth0的数据后,dump出来一个文件,给 php访问接口访问.
这里dump出来的vnstat_dump_eth0 文件名是有规定的。
在vnstat_php_frontend-1.4.1.tar.gz 包里的config.php 里有说明。
最后,编辑 vnstat/config.php 这个文件,将数据目录改为 /data/vnstat
即:
$data_dir = ‘/data/vnstat’;
将要监控的网卡指定为1个:
// list of network interfaces monitored by vnStat
//$iface_list = array(’eth0′, ‘eth1′, ’sixxs’);
$iface_list = array(’eth0′,);
// will be displayed instead
//
$iface_title['eth0'] = ‘Internal’;
//$iface_title['eth1'] = ‘Internet’;
//$iface_title['sixxs'] = ‘SixXS IPv6′;
这一切都搞好后,现在用 www.mydomain.com/vnstat/访问,就会发现有流量统计了,统计的数据更新是5分钟刷新一次
———————————————————————————————————————————————
Ubuntu 安装: (其本上其它发行版的包管理程序中也都包含了这款软件,请自行安装)
sudo apt-get install vnstat vnstati
安装好后运行以下命令初始化数据库
sudo vnstat -u -i eth0
启动 daemon 进程,(有些发行版可能需要通过 cron 来定期执行)
sudo /etc/init.d/vnstat start
默认开机启动
sudo update-rc.d vnstat enable
Centos 安装:需要先安装epel源后才能使用yum来安装
yum install epel-release -y && yum install -y vnstat
创建监控数据库
vnstat -u -i eth0
这里的eth0可以改成你需要的网卡
启动服务并设置开机启动
service vnstat start
chkconfig vnstat on
流量查看命令
1、 命令行方式:直接输入vnstat ,或后面加相应的参数,比如 vnstat -d 是显示日流量信息, vnstat -m 是月流量信息,其它参数请 man vnstat 。
效果图:
2、输出到图形:使用 vnstati 命令,更多详细的参数可以请 man vnstati。
比如输出每月的流量统计图。
vnstati -i eth0 - -months - -output /dir/month.png
效果图:
官方主页: http://humdi.net/vnstat
官方演示:http://humdi.net/vnstat/cgidemo/
想要生成网页的话,就写一条 cron 脚本 ,定时输出网页,然后自已写一个 html 文件来调用这些图片就可以了。
vnStat有 vnstat PHP frontend 扩展
vnstat PHP frontend安装:
下载最新版vnstat PHP frontend,解压文件,改名为vnstat,然后上传到某个网站根目录下,这样就可以以http://www.vpswe.com/vnstat 来访问到,就出来页面了,但此时没有数据,因为还要使系统生成数据。
下载地址:http://www.sqweek.com/sqweek/files/vnstat_php_frontend-1.5.1.tar.gz
官网地址:http://www.sqweek.com/sqweek/index.php?p=1
效果图:
建立流量数据库:
ifconfig 指令查看需要监控的网卡,假设只有eth0
然后生成数据库:
/usr/bin/vnstat -u -i eth0
然后定时更新数据库,通过cron的方式:
实际上在安装vnstat时,已经在系统里安装好了vnstat的cron,crontab内容在 /etc/cron.d/vnstat,如果没有使用命令 touch /etc/cron.d/vnstat 创建
内容为:
0-55/5 * * * * root vnstat -u -i eth0
0-55/5 * * * * root vnstat --dumpdb -i eth0 >/var/lib/vnstat/vnstat_dump_eth0
第一行为安装时自动指定的.
第二行是为了更新eth0的数据后,dump出来一个文件,给 php访问接口访问.
这里dump出来的vnstat_dump_eth0 文件名是有规定的。
注意:有时候采用上面的收集办法,无法采集到数据,可以采用下面的办法
cat > /var/lib/vnstat/dump.sh<<EOF
vnstat -u -i eth0
vnstat --dumpdb -i eth0 >/var/lib/vnstat/vnstat_dump_eth0
EOF
再执行:
crontab -e
加入执行命令
*/5 * * * * sh /var/lib/vnstat/dump.sh
再删除vnstat原有的cron
rm /etc/cron.d/vnstat
在vnstat_php_frontend-1.5.1.tar.gz 包里的config.php 里有说明。
最后,编辑vnstat/config.php这个文件,将数据目录改为/var/lib/vnstat/,如果不存在此目录,需要使用mkdir -p /var/lib/vnstat/创建此目录。
即:
$data_dir = '/var/lib/vnstat/';
指定显示标题
$iface_title['eth0'] = 'VpsWe-Internal';
下面设置以什么图片格式显示,可以是svg或png,一般选择png就可以,svg在IE下需要安装插件,Firefox不需要;如果用png在IE、Firefox下均能直接显示。
$graph_format='png';
指定vnstat的安装目录,如果是安装上述方法安装,直接按下面填写即可。
$vnstat_bin = '/usr/bin/vnstat';
将要监控的网卡指定为1个:
// list of network interfaces monitored by vnStat
//$iface_list = array(’eth0′, ‘eth1′, ’sixxs’);
$iface_list = array(’eth0′,);
// will be displayed instead
//
$iface_title['eth0'] = ‘Internal’;
//$iface_title['eth1'] = ‘Internet’;
//$iface_title['sixxs'] = ‘SixXS IPv6′;
修改语言为英语:$language = 'nl'; 将 nl 替换为 en 保存。