vnStat 是一个免费的、开源的、基于控制台的网络流量监控工具,适用于 Linux 操作系统。使用 vnStat,您可以监控不同时间段的网络统计信息。它简单、轻便,并且只占用一小部分系统资源。 vnStat 允许您生成每小时、每天、每月、每周和每天的网络流量数据。本教程将向您展示如何安装和使用 vnStat 来监控网络流量。
特征
同时监控多个接口。 提供多种输出选项,如按天、按周等。 按小时、天、月或周对数据进行排序,或获取前 10 天。 允许您生成图像格式的输出。 同时监控多个网络接口。 轻量级且 CPU 使用率低。本教程将向您展示如何在 Ubuntu 22.04 上安装和使用 VnStat 工具来监控网络流量。
先决条件 一台运行 Ubuntu 20.04 的服务器。 在服务器上配置了根密码。 入门在开始之前,建议将所有系统包更新和升级到最新版本。您可以使用以下命令更新所有这些:
apt update -yapt upgrade -y更新所有包后,您可以在下一步中从源安装 VnStat。
安装 vnStat默认情况下,最新版本的 vnStat 在 Ubuntu 默认存储库中不可用。所以你需要从源代码编译它。
首先,使用以下命令安装编译 vnStat 所需的所有依赖项:
apt-get install build-essential gcc make libsqlite3-dev -y安装所有依赖项后,使用以下命令下载最新版本的 vnStat 源:
wget https://humdi.net/vnstat/vnstat-2.10.tar.gz下载完成后,使用以下命令解压缩下载的文件:
tar -xvzf vnstat-2.10.tar.gz接下来,将目录更改为提取的目录并使用以下命令对其进行配置:
cd vnstat-2.10./configure --prefix=/usr --sysconfdir=/etc接下来,通过运行以下命令安装 vnStat:
makemake install安装 vnStat 后,您可以使用以下命令验证安装的 vnStat 版本:
vnstat -v您应该得到以下输出:
vnStat 2.10 by Teemu Toivola完成后,您可以继续下一步。
使用 Systemd 管理 VnStat要使用 systemd 管理 VnStat,您需要将 vnStat systemd 服务文件从 vnStat 源复制到 /etc/systemd/system/ 目录:
cp -v vnstat-2.10/examples/systemd/vnstat.service /etc/systemd/system/接下来,启用 vnStat 服务并使用以下命令启动它:
systemctl enable vnstatsystemctl start vnstat您还可以使用以下命令检查 vnStat 服务的状态:
systemctl status vnstat您应该得到以下输出:
? vnstat.service - vnStat network traffic monitorLoaded: loaded (/lib/systemd/system/vnstat.service; enabled; vendor preset: enabled)Active: active (running) since Tue 2022-11-29 08:34:08 IST; 2h 49min ago Docs: man:vnstatd(1)man:vnstat(1)man:vnstat.conf(5) Main PID: 1730 (vnstatd)Tasks: 1 (limit: 4915)CGroup: /system.slice/vnstat.service??1730 /usr/sbin/vnstatd -nNov 29 08:34:08 vyompc systemd[1]: Started vnStat network traffic monitor.Nov 29 08:34:08 vyompc vnstatd[1730]: Info: vnStat daemon 1.18 started. (pid:1730 uid:122 gid:128)Nov 29 08:34:08 vyompc vnstatd[1730]: Info: Monitoring: enp20s0 (1000 Mbit) wlp22s0 (1000 Mbit)完成后,您可以继续下一步。
如何使用 vnStat 监控网络流量vnStat 提供了几个选项,允许您监控网络流量。您可以使用以下命令列出所有可用选项:
vnstat --help您应该得到以下输出:
vnStat 2.10 by Teemu Toivola-5, --fiveminutes [limit]show 5 minutes -h, --hours [limit] show hours -hg, --hoursgraphshow hours graph -d, --days [limit] show days -m, --months [limit]show months -y, --years [limit] show years -t, --top [limit]show top days -b, --beginset list begin date -e, --end set list end date --oneline [mode] show simple parsable format --json [mode] [limit]show database in json format --xml [mode] [limit] show database in xml format -tr, --traffic [time]calculate traffic -l, --live [mode]show transfer rate in real time -i, --iface select interfaceUse "--longhelp" or "man vnstat" for complete list of options.在使用 vnStat 之前,您需要等待一段时间来更新 vnStat 数据库。更新数据库后,您可以不带任何选项运行 vnStat,如下所示:
vnstat您应该看到以下输出:
rx / tx / total/estimated wlp22s0:Oct '22 17.80 GiB /4.35 GiB /22.15 GiBNov '22 16.61 GiB /3.62 GiB /20.23 GiB /21.48 GiB yesterday332.22 MiB / 114.17 MiB / 446.39 MiB today710.25 MiB /44.85 MiB / 755.11 MiB /1.55 GiB要使用特定的网络接口,请使用 -i 选项,如下所示:
vnstat -i ens3您应该在以下输出中获得每日和每月的统计信息:
Database updated: 2020-11-12 06:30:00ens3 since Saturday 29 January 2022 rx: 185.89 GiB tx: 38.82 GiB total: 224.70 GiBmonthly rx | tx |total|avg. rate ------------------------+-------------+-------------+---------------Oct '22 17.80 GiB |4.35 GiB |22.15 GiB |71.04 kbit/sNov '22 16.61 GiB |3.62 GiB |20.23 GiB |71.20 kbit/s ------------------------+-------------+-------------+--------------- estimated 17.64 GiB |3.85 GiB |21.48 GiB |daily rx | tx |total|avg. rate ------------------------+-------------+-------------+--------------- yesterday332.22 MiB | 114.17 MiB | 446.39 MiB |43.34 kbit/s today710.25 MiB |44.85 MiB | 755.11 MiB | 154.31 kbit/s ------------------------+-------------+-------------+--------------- estimated 1.46 GiB | 92 MiB |1.55 GiB |要显示每小时统计信息,请运行以下命令:
vnstat -h您应该得到以下输出:
ens3 / hourly h rx (MiB)tx (MiB) ][ h rx (MiB)tx (MiB) ][ h rx (MiB)tx (MiB) 125.40.2 ][ 2030.414.8 ][ 040.00.01372.715.0 ][ 2124.86.4 ][ 050.00.0141.90.4 ][ 2220.19.8 ][ 060.00.0150.00.0 ][ 230.00.0 ][ 070.00.0160.00.0 ][ 000.00.0 ][ 08 147.010.21736.49.6 ][ 010.00.0 ][ 0964.19.41854.023.4 ][ 020.00.0 ][ 10 496.923.91986.534.5 ][ 030.00.0 ][ 112.31.3要显示每日统计信息,请运行以下命令:
vnstat -d您应该得到以下输出:
ens3 / dailyday rx | tx |total|avg. rate ------------------------+-------------+-------------+--------------- Sunday 30 October 2022 266.75 MiB |47.81 MiB | 314.56 MiB |30.54 kbit/s Monday 31 October 2022 701.49 MiB | 225.89 MiB | 927.38 MiB |90.04 kbit/s Tuesday 01 November 2022 506.20 MiB | 184.50 MiB | 690.70 MiB |67.06 kbit/s Wednesday 02 November 2022 631.15 MiB | 182.43 MiB | 813.59 MiB |78.99 kbit/s Thursday 03 November 2022 189.21 MiB |41.18 MiB | 230.39 MiB |22.37 kbit/s Friday 04 November 2022 703.67 MiB | 175.49 MiB | 879.16 MiB |85.36 kbit/s Saturday 05 November 2022 518.96 MiB | 130.47 MiB | 649.43 MiB |63.05 kbit/s Sunday 06 November 2022 301.74 MiB |81.95 MiB | 383.69 MiB |37.25 kbit/s您可以使用选项 -t 来显示流量最高的日子:
vnstat -t您应该得到以下输出:
ens3 / top 1# day rx | tx |total|avg. rate-----------------------------+-------------+-------------+---------------1Thursday 03 February 20222.58 GiB | 214.64 MiB |2.79 GiB | 277.76 kbit/s2Saturday 05 February 20222.11 GiB | 229.32 MiB |2.33 GiB | 231.67 kbit/s3Tuesday 01 February 20221.81 GiB | 190.56 MiB |2.00 GiB | 198.71 kbit/s4Wednesday 02 February 20221.80 GiB | 179.75 MiB |1.98 GiB | 196.72 kbit/s5Sunday 10 July 20221.69 GiB | 248.34 MiB |1.93 GiB | 192.21 kbit/s6Saturday 19 February 20221.56 GiB | 172.67 MiB |1.73 GiB | 171.56 kbit/s7Friday 16 September 20221.44 GiB | 201.21 MiB |1.64 GiB | 163.16 kbit/s8Friday 17 June 20221.34 GiB | 278.89 MiB |1.61 GiB | 160.33 kbit/s9Friday 25 March 20221.06 GiB | 504.19 MiB |1.55 GiB | 154.51 kbit/s10Monday 07 February 20221.30 GiB | 160.68 MiB |1.46 GiB | 145.30 kbit/s-----------------------------+-------------+-------------+---------------要实时显示网络流量统计信息,请运行以下命令:
vnstat -l您应该得到以下输出:
Monitoring ens3...(press CTRL-C to stop)rx:11 kbit/s 7 p/s tx:9 kbit/s 6 p/s^C ens3 / traffic statisticsrx |tx--------------------------------------+------------------ bytes17 KiB | 18 KiB--------------------------------------+------------------ max 24 kbit/s |33 kbit/s average6.78 kbit/s | 7.39 kbit/s min0 kbit/s |0 kbit/s--------------------------------------+------------------ packets 78 | 82--------------------------------------+------------------ max 10 p/s | 11 p/s average 3 p/s |4 p/s min 0 p/s |0 p/s--------------------------------------+------------------ time20 seconds您还可以使用以下命令清除接口 ens3 的数据库条目并停止监控:
vnstat -i ens3 --remove --force您应该得到以下输出:
Interface "ens3" removed from database.The interface will no longer be monitored. Use --addif monitoring the interface is again needed.您还可以通过运行以下命令再次添加已删除的接口 ens3:
vnstat -i ens3 --add您应该得到以下输出:
Adding interface "ens3" for monitoring to database...Restart the vnStat daemon if it is currently running in order to start monitoring "ens3".接下来,重新启动 vnStat 服务以应用更改:
systemctl restart vnstat结论在这篇文章中,我们解释了如何在 Ubuntu 22.04 上安装 vnStat。我们还通过几个示例向您展示了如何使用它来监控网络流量。您现在可以使用此工具来分析和解决与网络相关的问题。如果您有任何问题,请随时问我。