作者:admin,发布日期:2019-12-10
阅读:3976;评论:0
咕了好久才写的文章,博主已经顺利变为年更博主。
写在开头
vnStat是用于Linux和BSD的基于控制台的网络流量监视器,它记录所选接口的网络流量日志。它使用内核提供的网络接口统计信息作为信息源。这意味着vnStat实际上不会嗅探任何流量,而且还可以确保不管网络流量速率如何,系统资源的使用都比较少,这篇文章,博主将使用Centos7安装VnStat,并且实现流量的统计。
安装方法
centos下的epel源内已经包含了vnstat的安装包。我们只需要安装epel-release,再安装vnstat,即可完成安装。
yum install -y epel-release # 安装epel源 yum install -y vnstat # 安装VnStat
安装完成后,需要创建vnstat的数据库,用于存放流量的统计信息。
vnStat 1.15 by Teemu Toivola <tst at iki dot fi>
-q, --query query database
-h, --hours show hours
-d, --days show days
-m, --months show months
-w, --weeks show weeks
-t, --top10 show top 10 days
-s, --short use short output
-u, --update update database
-i, --iface select interface (default: eth0)
-?, --help short help
-v, --version show version
-tr, --traffic calculate traffic
-ru, --rateunit swap configured rate unit
-l, --live show transfer rate in real time
See also "--longhelp" for complete options list and "man vnstat".
vnstat -u -i eth0 # -u 更新数据库 -i 指定网卡
这里指定了eth0网卡,运行此条命令后将为eth0网卡创建数据库(如果网卡名为其他名称,需要进行修改)
创建数据库完成之后,需要给vnstat目录设置所有者!!!(重要,否则无法统计流量,下面写原因)
chown -R vnstat:vnstat /var/lib/vnstat/ # 设置vnstat数据库目录的所有者为vnstat用户
接着启动vnstat统计服务,即可安装完成。
systemctl enable vnstat.service # 启用vnstat服务开机启动 systemctl start vnstat.service # 启动vnstat服务 journalctl -u vnstat.service -f # 查看vnstat服务日志,ctrl+c退出
查看流量统计
vnstat(直接控制台输出流量使用情况)
[root@V2-SHARE vnstat]# vnstat -h # 按小时查看流量使用 eth0 22:26 ^ t | rt | rt | t rt | rt rt | rt rt | rt rt | rt rt rt | rt rt r rt | rt rt rt rt r -+---------------------------------------------------------------------------> | 23 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 h rx (MiB) tx (MiB) h rx (MiB) tx (MiB) h rx (MiB) tx (MiB) 23 68.10 58.84 07 19.00 6.99 15 239.37 246.43 00 473.20 529.53 08 19.01 7.02 16 82.93 73.40 01 673.20 743.19 09 20.36 8.31 17 25.85 13.92 02 19.05 7.05 10 28.27 16.21 18 19.00 7.04 03 18.99 7.02 11 20.51 8.51 19 18.91 6.93 04 18.95 6.95 12 27.42 15.34 20 19.00 6.99 05 154.30 137.84 13 24.61 12.61 21 33.72 26.74 06 18.98 6.99 14 37.84 27.07 22 8.26 3.06 [root@V2-SHARE vnstat]# vnstat -d # 按天查看流量使用 eth0 / daily day rx | tx | total | avg. rate ------------------------+-------------+-------------+--------------- 12/04/2019 6.85 GiB | 7.03 GiB | 13.87 GiB | 1.35 Mbit/s 12/05/2019 112 KiB | 64 KiB | 176 KiB | 0.02 kbit/s 12/06/2019 0 KiB | 0 KiB | 0 KiB | 0.00 kbit/s 12/09/2019 3.76 GiB | 2.88 GiB | 6.63 GiB | 644.19 kbit/s 12/10/2019 1.97 GiB | 1.88 GiB | 3.85 GiB | 400.24 kbit/s ------------------------+-------------+-------------+--------------- estimated 2.11 GiB | 2.01 GiB | 4.12 GiB | [root@V2-SHARE vnstat]# vnstat -m # 按月查看流量使用 eth0 / monthly month rx | tx | total | avg. rate ------------------------+-------------+-------------+--------------- Dec '19 12.57 GiB | 11.79 GiB | 24.36 GiB | 246.35 kbit/s ------------------------+-------------+-------------+--------------- estimated 40.60 GiB | 38.06 GiB | 78.65 GiB | [root@V2-SHARE vnstat]# vnstat -w # 按周查看流量使用 eth0 / weekly rx | tx | total | avg. rate ---------------------------+-------------+-------------+--------------- last 7 days 12.58 GiB | 11.79 GiB | 24.36 GiB | 340.94 kbit/s last week 6.85 GiB | 7.03 GiB | 13.87 GiB | 192.43 kbit/s current week 5.73 GiB | 4.76 GiB | 10.49 GiB | 525.49 kbit/s ---------------------------+-------------+-------------+--------------- estimated 20.93 GiB | 17.38 GiB | 38.31 GiB | [root@V2-SHARE vnstat]# vnstat -t # 显示流量使用前十的日期 eth0 / top 10 # day rx | tx | total | avg. rate -----------------------------+-------------+-------------+--------------- 1 12/04/2019 6.85 GiB | 7.03 GiB | 13.87 GiB | 1.35 Mbit/s 2 12/09/2019 3.76 GiB | 2.88 GiB | 6.63 GiB | 644.19 kbit/s 3 12/05/2019 112 KiB | 64 KiB | 176 KiB | 0.02 kbit/s -----------------------------+-------------+-------------+---------------
vnstati (输出流量使用图片)
[root@V2-SHARE vnstat]# vnstati vnStat image output 1.15 by Teemu Toivola <tst at iki dot fi> -h, --hours output hours -d, --days output days -m, --months output months -t, --top10 output top10 -s, --summary output summary -hs, --hsummary output horizontal summary with hours -vs, --vsummary output vertical summary with hours -nh, --noheader remove header from output -ne, --noedge remove edge from output -nl, --nolegend remove legend from output -ru, --rateunit swap configured rate unit -o, --output select output filename -c, --cache update output only when too old -i, --iface used interface (default: eth0) -?, --help this help -D, --debug show some additional debug information -v, --version show version --dbdir select database directory --style select output style (0-3) --locale set locale --config select config file --altdate use alternative date location --headertext specify header text string --transparent toggle background transparency See also "man vnstati". [root@V2-SHARE vnstat]# vnstati -h -o output.png # 按小时查看流量使用情况,输出到当前目录的output.png文件内
(其余命令可参考上面的vnstat使用)
无法在后台统计流量的解决
这也是偶尔一次的发现,centos7安装完成vnstat后,按照正常方法,启用vnstat服务,发现不能统计流量,只有vnstat -u之后,才能看到一些零星的数据,查阅资料已经翻看日志后,才发现,因为权限问题,vnstat用户无法往所有者为root用户的数据库文件内写入流量统计信息,此时数据只能记录在缓存中。
下面是日志显示的内容,可以自行排查是否出现下面日志:
-- Logs begin at Mon 2019-12-09 17:09:29 CST. -- Dec 10 19:46:04 V2-SHARE vnstatd[990]: Error: Unable to create database backup "/var/lib/vnstat/.eth0". Dec 10 19:46:04 V2-SHARE vnstatd[990]: Error: Unable to create database backup "/var/lib/vnstat/.eth0". Dec 10 19:46:04 V2-SHARE vnstatd[990]: Error: Unable to create database backup "/var/lib/vnstat/.eth0". Dec 10 19:46:04 V2-SHARE vnstatd[990]: Error: Unable to create database backup "/var/lib/vnstat/.eth0". Dec 10 19:46:04 V2-SHARE vnstatd[990]: Error: Unable to create database backup "/var/lib/vnstat/.eth0". Dec 10 19:46:04 V2-SHARE vnstatd[990]: Error: Unable to create database backup "/var/lib/vnstat/.eth0". Dec 10 19:46:04 V2-SHARE vnstatd[990]: Error: Unable to create database backup "/var/lib/vnstat/.eth0". Dec 10 19:46:04 V2-SHARE vnstatd[990]: Error: Unable to create database backup "/var/lib/vnstat/.eth0". Dec 10 19:46:04 V2-SHARE vnstatd[990]: Error: Unable to create database backup "/var/lib/vnstat/.eth0". Dec 10 19:46:04 V2-SHARE vnstatd[990]: Error: Unable to create database backup "/var/lib/vnstat/.eth0".
Dec 09 17:30:58 V2-SHARE vnstatd[990]: Error: Unable to write database, continuing with cached data.
解决方法就是给vnstat整个目录修改所有者,然后重启服务,就能看到正常的流量统计
chown -R vnstat:vnstat /var/lib/vnstat/ # 设置vnstat数据库目录的所有者为vnstat用户 systemctl restart vnstat.service # 重启vnstat