前言

vnstat是个Linux下基于shell终端的网络流量监控工具,可帮助用户在不同时间段内监视,记录和查看网络统计信息。
它提供了各种网络接口的汇总,它允许用户以详细表或命令行统计视图的形式查看小时,每日,每月统计,统计VPS的流量使用工具还是比较方便的。

软件安装

一般直接安装命令就可以了,比如CentOS下直接输入下面的命令:

1
yum install vnstat

如果出现找不到软件,可参考此教程解决。

创建数据库

首先需要创建数据库:

1
vnstat --create -i eth0

实际上第一次直接运行 vnstat 命令会自动提示让创建数据库,这里默认监控网卡 eth0 ,根据自己实际情况修改。如果是之前安装过,可以加 -u 参数升级,不存在的话会创建该数据库:

1
vnstat -u -i eth0

其他使用命令

其实只有几个命令,可以查看帮助文档。

1
2
3
4
5
6
vnstat -l #查看实时流量统计
vnstat -l -i eth0 #查看指定网络接口的实时流量统计
vnstat -h #按小时查看
vnstat -d #按天查看
vnstat -w #按周查看
vnstat -m #按月查看

遇到的问题

提示:Not enough data available yet

可能你安装好了,vnstat -l 可以查看统计,但其他的就提示 Not enough data available yet,隔天去看还是这样,其实这是有问题的,多半可能是vnstat没有正常运行,可以按下面的方法解决:

1
2
3
/etc/init.d/vnstat status #查看运行状态
/etc/init.d/vnstat start #启动vnstat
chkconfig vnstat on #设置开机启动

上面是以CentOS6示例,如果是CentOS7或其他发行版,使用对应命即可,大同小异:

1
2
3
systemctl enable vnstat
systemctl start vnstat
systemctl status vnstat

启动后就可以看到相关流量统计数据了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@LA-quarterly ~]# /etc/init.d/vnstat status
vnstatd is stopped
[root@LA-quarterly ~]# /etc/init.d/vnstat start
Starting vnstatd: [ OK ]
[root@LA-quarterly ~]# /etc/init.d/vnstat status
vnstatd (pid 11395) is running...
[root@LA-quarterly ~]# vnstat -d

eth0 / daily

day rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
09/19/18 0 KiB | 0 KiB | 0 KiB | 0.00 kbit/s
11/27/18 72.69 MiB | 66.84 MiB | 139.53 MiB | 14.00 kbit/s
------------------------+-------------+-------------+---------------
estimated 76 MiB | 69 MiB | 145 MiB |
[root@LA-quarterly ~]# vnstat -l -i eth0
Monitoring eth0... (press CTRL-C to stop)

rx: 1.40 Mbit/s 336 p/s tx: 1.38 Mbit/s 90 p/s^C

Permission denied

现象和上面的一样,但 systemctl status vnstat 查看提示是这样的:

1
2
3
4
5
6
7
8
9
10
11
12
[root@v56829 ~]# systemctl status vnstat
● vnstat.service - vnStat network traffic monitor
Loaded: loaded (/usr/lib/systemd/system/vnstat.service; disabled; vendor preset: disabled)
Active: active (running) since Wed 2018-12-05 09:58:10 CST; 1 day 5h ago
Docs: man:vnstatd(1)
man:vnstat(1)
man:vnstat.conf(5)
Main PID: 11422 (vnstatd)
CGroup: /system.slice/vnstat.service
└─11422 /usr/sbin/vnstatd -n

Dec 06 13:53:18 v56829.kvm.u28283 vnstatd[11422]: Error: Unable to open database "/var/lib/vnstat/eth0" for writing: Permission denied

可能是软件仓库版本的问题,同一个软件在某个操作系统上出现过,而某些系统里 /var/lib/vnstat/eth0 文件权限也是root但能正常,不正常的系统里可以更改该数据库文件所属:

1
2
3
4
5
6
7
[root@v56829 ~]# ll /var/lib/vnstat/
total 4
-rw-r--r-- 1 root root 2792 Dec 6 15:19 eth0
[root@v56829 ~]# chown -R vnstat:vnstat /var/lib/vnstat/
[root@v56829 ~]# ll /var/lib/vnstat/
total 4
-rw-r--r-- 1 vnstat vnstat 2792 Dec 6 15:19 eth0

更改为 vnstat 所属后,过几分钟再去运行 vnstat 就能看到流量统计结果了。