VNSTAT - Linux和BSD中的监控网络带宽
VNSTAT是一个免费的开源,轻量级和基于控制的网络流量监视器。
使用VNSTAT,我们可以轻松地查找在小时,每日,每月或者特定时间段内消耗的网络带宽和显示结果。
它会收集单个或者多个网络接口的使用详细信息,并在命令行中显示摘要。
它还有助于计算每月或者每天或者每天的近似数量的互联网带宽使用量或者针对特定的时间段。
在本教程中,我们将看到如何使用VNSTAT监视Linux和BSD中的网络带宽。
在Linux上安装vnstat
VNStat可在许多Linux和UNIX操作系统的默认存储库中提供。
我们可以使用分发包管理器安装它。
在基于Arch的系统上:
确保已启用[社区]存储库并使用以下使用Pacman安装它:
$sudo pacman -S vnstat
在Debian,Uubntu,Linux Mint:
$sudo apt-get install vnstat
在Ubuntu上,我们可能需要启用[Universe]存储库以安装VNStat。
在Redhat,Centos:
首先添加和启用EPEL存储库:
$sudo yum install epel-release
然后安装VNSTAT,如上所示。
$sudo yum install vnstat
关于Fedora:
$sudo dnf install vnstat
OpenSUSE:
$sudo zypper install vnstat
启动VNStat服务
安装后VNStat后,使用命令启动它:
$sudo systemctl enable --now vnstat
我们不需要在基于DEB的系统上启动VNSTAT,因为它将在安装时自动启动。
在FreeBSD上安装VNSTAT
在像FreeBSD等BSD系统上,使用命令将VNStat安装为root用户:
# pkg update
# pkg install vnstat
一旦安装,请启用并启动如下vnstat服务。
# echo 'vnstat_enable="YES"' >> /etc/rc.conf
# service vnstat start
示例输出:
Starting vnstat. No interfaces found in database, adding available interfaces... Interface "em0" added with 1000 Mbit bandwidth limit. -> 1 new interface found. Limits can be modified using the configuration file. See "man vnstat.conf". Unwanted interfaces can be removed from monitoring with "vnstat --remove".".
配置默认网络接口
在Linux上:
VNSTAT在其配置文件(/etc/vnstat.conf)中使用eth0作为默认网络接口。
但是,在某些Linux系统(例如Ubuntu)中,网络接口名称可能是不同的,如ENP0S3,ENP0S8.
我们可以使用"ip addr"命令验证网络接口的名称。
让我们看看VNSTAT配置文件的内容。
$head /etc/vnstat.conf
示例输出:
# vnStat 1.18 config file# default interface Interface "eth0" # location of the database directory DatabaseDir "/var/lib/vnstat" # locale (LC_ALL) ("-" = use system locale)
如我们所见,默认接口是此文件中的ETHO。
让我们检查VNSTAT标识的可用网络接口。
$ls /var/lib/vnstat enp0s3 enp0s8
如我们所见,可用的网络接口与VNStat.conf文件中定义的网络接口不同。
如果我们未设置正确的默认接口,则在每小时或者每月查看网络带宽流量时可能会收到以下错误。
Error: Unable to read database "/var/lib/vnstat/eth0": No such file or directory
发生这种情况是因为,默认接口在/etc/vnstat.conf文件中错误定义。
要配置默认网络接口,请编辑/etc/vnstat.conf文件并更新正确的接口名称。
我们可以直接编辑/etc/vnstat.conf文件并全局更新接口名称。
但是,建议在用户的主目录中创建自己的VNSTAT配置文件。
$cp /etc/vnstat.conf ~/.vnstatrc
$nano ~/.vnstatrc
我将使用ENP0S3作为我的默认接口。
用自己替换ENP0S3.
保存并关闭文件。
在FreeBSD上:
编辑VNSTAT配置文件:
# vi /usr/local/etc/vnstat.conf
如果未使用配置文件,请使用示例配置文件创建新的文件:
# cp /usr/local/etc/vnstat.conf.sample /usr/local/etc/vnstat.conf
然后,更新正确的默认网络接口:
Interface "em0"
保存并关闭文件。
如果我们是vnstat的新手,请通过运行此命令,从VNStat的帮助部分中查看可用选项列表:
$vnstat --help
示例输出:
vnStat 1.18 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
示例输出:
rx / tx / total / estimated enp0s3: Sep '19 120 KiB / 66 KiB / 186 KiB / 0 KiB today 120 KiB / 66 KiB / 186 KiB / -- enp0s8: Sep '19 128 KiB / 88 KiB / 216 KiB / 0 KiB today 128 KiB / 88 KiB / 216 KiB / -
其中
- rx - 收到的流量
- TX - 转让的流量
允许vnstat几分钟开始收集网络流量使用。
如果在安装后立即启动VNSTAT,则可以获得下面的结果。
enp0s3: Not enough data available yet.
或者,我们将在基于RPM的分布中获得以下输出,例如CentOS。
No database found, nothing to do. Use --help for help. A new database can be created with the following command: vnstat --create -i eth0 Replace 'eth0' with the interface that should be monitored. The following interfaces are currently available: enp0s3 (1000 Mbit) lo
它现在没有显示。
这是因为,VNStat尚未开始收集统计数据。
查看特定界面的带宽使用情况
要查看特定接口的网络带宽使用,例如ENP0S3,只需提及下面的网卡名称。
$vnstat -i enp0s3
示例输出:
Database updated: Mon Sep 9 08:26:47 2019 enp0s3 since 09/09/2019 rx: 136 KiB tx: 74 KiB total: 210 KiB monthly rx | tx | total | avg. rate ------------------------+-------------+-------------+-------------- Sep '19 136 KiB | 74 KiB | 210 KiB | 0.00 kbit/s ------------------------+-------------+-------------+-------------- estimated -- | -- | -- | daily rx | tx | total | avg. rate ------------------------+-------------+-------------+-------------- today 136 KiB | 74 KiB | 210 KiB | 0.06 kbit/s ------------------------+-------------+-------------+-------------- estimated -- | -- | -- |
其中ENP0S3是我的网卡名称。
我们可以使用"ip addr"命令找到网卡名称。
在FreeBSD上,网卡名称为EM0。
要查看其带宽,只需运行:
# vnstat -i em0
示例输出:
Database updated: 2019-09-09 16:40:00 em0 since 2019-09-09 rx: 606.84 KiB tx: 56.12 KiB total: 662.96 KiB monthly rx | tx | total | avg. rate ------------------------+-------------+-------------+-------------- 2019-09 606.84 KiB | 56.12 KiB | 662.96 KiB | 7 bit/s ------------------------+-------------+-------------+-------------- estimated -- | -- | -- | daily rx | tx | total | avg. rate ------------------------+-------------+-------------+-------------- today 606.84 KiB | 56.12 KiB | 662.96 KiB | 90 bit/s ------------------------+-------------+-------------+-------------- estimated 873 KiB | 80 KiB | 953 KiB
查看每小时带宽使用
让我们每小时显示网络流量结果。
为此,运行:
$vnstat -h
示例输出:
enp0s3 09:46 ^ r | r r | r r | r r | r r r | rt rt r | rt rt r | rt rt rt | rt rt rt | r rt rt rt -+---------------------------------------------------------------------------> | 10 11 12 13 14 15 16 17 18 19 20 21 22 23 00 01 02 03 04 05 06 07 08 09 h rx (KiB) tx (KiB) ][ h rx (KiB) tx (KiB) ][ h rx (KiB) tx (KiB) 10 0 0 ][ 18 0 0 ][ 02 0 0 11 0 0 ][ 19 0 0 ][ 03 0 0 12 0 0 ][ 20 0 0 ][ 04 0 0 13 0 0 ][ 21 0 0 ][ 05 0 0 14 0 0 ][ 22 0 0 ][ 06 12 7 15 0 0 ][ 23 0 0 ][ 07 86 48 16 0 0 ][ 00 0 0 ][ 08 88 45 17 0 0 ][ 01 0 0 ][ 09 59 32
如果我们有多个接口,请使用-i参数查看特定卡的每小时网络流量。
$vnstat -h -i enp0s8
建议阅读:
- 如何使用Wondershaper限制Linux中的网络带宽
查看日常带宽使用
使用'-d'标志显示每天默认网络接口的网络流量。
$vnstat -d
示例输出:
enp0s3 /daily day rx | tx | total | avg. rate ------------------------+-------------+-------------+-------------- 09/09/2019 258 KiB | 138 KiB | 396 KiB | 0.09 kbit/s ------------------------+-------------+-------------+-------------- estimated -- | -- | -- |
查看每周带宽使用
$vnstat -w
示例输出:
enp0s3 /weekly rx | tx | total | avg. rate ---------------------------+-------------+-------------+-------------- last 7 days 258 KiB | 138 KiB | 396 KiB | 0.00 kbit/s current week 258 KiB | 138 KiB | 396 KiB | 0.09 kbit/s ---------------------------+-------------+-------------+-------------- estimated -- | -- | -- |
查看每月带宽使用情况
要查看网络接口卡的月度使用,请使用"M"交换机。
$vnstat -m
示例输出:
enp0s3 /monthly month rx | tx | total | avg. rate ------------------------+-------------+-------------+-------------- Sep '19 258 KiB | 138 KiB | 396 KiB | 0.00 kbit/s ------------------------+-------------+-------------+-------------- estimated -- | -- | -- |
显示过去十天的带宽使用情况
显示过去十天的网络使用情况,使用't'标志。
$vnstat -t
示例输出:
enp0s3 /top 10 # day rx | tx | total | avg. rate -----------------------------+-------------+-------------+-------------- no data available -----------------------------+-------------+-------------+--------------
它不会显示十大数据的任何数据,因为我今天安装了VNStat。
建议阅读:
- 在Linux上安装NetData性能监控工具
观看特定时间的带宽使用
我们还可以查看特定时间的带宽使用情况。
要显示过去十秒钟的带宽使用,请运行:
$vnstat -i enp0s3 -tr 10
示例输出:
7 packets sampled in 10 seconds Traffic average for enp0s3 rx 0.28 kbit/s 0 packets/s tx 0.14 kbit/s 0 packets/s
查看Live LiveWidth使用情况
要启动实时监控特定接口卡的使用,请运行:
$vnstat -i enp0s3 -l
示例输出:
Monitoring enp0s3... (press CTRL-C to stop) rx: 0 kbit/s 0 p/s tx: 0 kbit/s 0 p/s
要停止实时监控,请按Ctrl-C。
有关更多详细信息,请参阅Man页面:
$man vnstat