vnstat 是一个命令行实用程序,可显示和记录系统上接口的网络流量。他利用内核提供的网络统计信息。因此,vnstat 不会为您的系统增加任何额外的负载来监控和记录网络流量。vnstat提供按月统计、按日统计、按5分钟统计、流量超标报警、流量使用预测等功能,可以通过安装好的 GD library提供图片输出。
vnstat从2.8版本开始支持自动添加网络接口,因此使用有网络接口热插拔的朋友问有福了,插入新网口后无需命令行指令即可自动添加新网口流量监测。
1.下载最新稳定源码
2.解压
3.进入目录编译
由于编译需要以来sqlite因此需要先编译sqlite。
wget https://www.sqlite.org/2023/sqlite-autoconf-3420000.tar.gz
tar xvf sqlite-autoconf-3420000.tar.gz
cd sqlite-autoconf-3420000
./configure --prefix=/usr && make -j4 && make install
cd ..
wget https://humdi.net/vnstat/vnstat-latest.tar.gz
tar xvf vnstat-latest.tar.gz
cd vnstat-2.10
./configure --prefix=/usr --sysconfdir=/etc && make -j4 && make install
cp -v examples/systemd/vnstat.service /etc/systemd/system/
systemctl enable vnstat
systemctl start vnstat
使用docker容器安装还可以附送一个流量监控页面方便在不打开终端的情况下用网页查看流量使用情况或者把流量信息嵌入到自己的网页中。
docker run -d \
--restart=unless-stopped \
--network=host \
-e HTTP_PORT=8685 \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
--name vnstat \
vergoh/vnstat
不方便从docker加载镜像的可以直接下载我备份的docker镜像,导入后就可以使用。
docker load -i vnstat_2_10_docker_image.tar
总览图
$ vnstat
$ docker exec vnstat vnstat
rx / tx / total / estimated
a_can0:
2023-07 88.57 KiB / 69.25 MiB / 69.33 MiB / 485.17 MiB
yesterday 5.74 KiB / 116.83 KiB / 122.57 KiB
today 0 B / 0 B / 0 B / --
eth0:
2023-07 958.64 MiB / 456.59 MiB / 1.38 GiB / 9.70 GiB
yesterday 25.63 MiB / 11.26 MiB / 36.88 MiB
today 40.71 KiB / 133.62 KiB / 174.33 KiB / 428 KiB
eth1:
2023-07 38.00 KiB / 9.78 KiB / 47.78 KiB / --
yesterday 0 B / 0 B / 0 B
today 0 B / 0 B / 0 B / --
m_can0:
2023-07 0 B / 0 B / 0 B / --
yesterday 0 B / 0 B / 0 B
today 0 B / 0 B / 0 B / --
m_can1:
2023-07 0 B / 0 B / 0 B / --
yesterday 0 B / 0 B / 0 B
today 0 B / 0 B / 0 B / --
按天
$ vnstat -d eth0
$ docker exec vnstat vnstat -d eth0
eth0 / daily
day rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
2023-07-14 1.83 GiB | 863.05 MiB | 2.68 GiB | 8.38 Mbit/s
------------------------+-------------+-------------+---------------
estimated 34.12 GiB | 15.68 GiB | 49.80 GiB |
按小时
$ vnstat -h eth0
$ docker exec vnstat vnstat -h eth0
eth0 / hourly
hour rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
2023-07-14
09:00 1.83 GiB | 849.25 MiB | 2.66 GiB | 6.34 Mbit/s
10:00 8.20 MiB | 15.10 MiB | 23.30 MiB | 81.45 kbit/s
------------------------+-------------+-------------+---------------
按5分钟
$ vnstat -5 eth0
$ docker exec vnstat vnstat -5 eth0
eth0 / 5 minute
time rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
2023-07-14
09:45 111.64 MiB | 67.40 MiB | 179.04 MiB | 5.01 Mbit/s
09:50 1.42 GiB | 527.85 MiB | 1.93 GiB | 55.40 Mbit/s
09:55 306.18 MiB | 254.00 MiB | 560.18 MiB | 15.66 Mbit/s
10:00 438.37 KiB | 1.38 MiB | 1.81 MiB | 50.49 kbit/s
10:05 207.27 KiB | 1.30 MiB | 1.50 MiB | 41.97 kbit/s
10:10 157.93 KiB | 1.28 MiB | 1.43 MiB | 40.12 kbit/s
10:15 148.66 KiB | 1.27 MiB | 1.41 MiB | 39.53 kbit/s
10:20 138.66 KiB | 1.07 MiB | 1.20 MiB | 33.64 kbit/s
10:25 2.97 MiB | 6.16 MiB | 9.13 MiB | 255.39 kbit/s
10:30 2.10 MiB | 1.34 MiB | 3.44 MiB | 96.08 kbit/s
10:35 2.07 MiB | 1.31 MiB | 3.38 MiB | 94.38 kbit/s
------------------------+-------------+-------------+---------------
小时图表
$ vnstat -hg eth0
$ docker exec vnstat vnstat -hg eth0
eth0 10:40
^ t
| t
| t
| r r t
| r r t
| r r t
| r r t
| r t t rt t
| rt t t t rt t t
| rt t t t t rt t t t
-+--------------------------------------------------------------------------->
| 11 12 13 14 15 16 17 18 19 20 21 22 23 00 01 02 03 04 05 06 07 08 09 10
h rx (KiB) tx (KiB) ][ h rx (KiB) tx (KiB) ][ h rx (KiB) tx (KiB)
11 59653.9 17662.7 ][ 19 673.0 6309.4 ][ 03 0.0 0.0
12 4151.8 27045.2 ][ 20 0.0 0.0 ][ 04 0.0 0.0
13 3321.3 28477.9 ][ 21 0.0 0.0 ][ 05 0.0 0.0
14 2334.9 19610.1 ][ 22 0.0 0.0 ][ 06 0.0 0.0
15 1207.5 12489.1 ][ 23 0.0 0.0 ][ 07 0.0 0.0
16 64149.0 27509.3 ][ 00 0.0 0.0 ][ 08 0.0 0.0
17 2385.0 21948.3 ][ 01 0.0 0.0 ][ 09 30.2 4.4
18 1620.7 15151.1 ][ 02 0.0 0.0 ][ 10 1336.4 81255.5
按最多排序
$ vnstat -t eth0
$ docker exec vnstat vnstat -t eth0
eth0 / top 3
# day rx | tx | total | avg. rate
-----------------------------+-------------+-------------+---------------
1 2023-07-12 6.58 GiB | 2.88 GiB | 9.47 GiB | 941.20 kbit/s
2 2023-07-13 139.99 MiB | 201.61 MiB | 341.60 MiB | 33.17 kbit/s
> 3 2023-07-14 1.33 MiB | 79.36 MiB | 80.69 MiB | 7.83 kbit/s
-----------------------------+-------------+-------------+---------------
实时统计
$ vnstat -l eth0
$ docker exec vnstat vnstat -l eth0
Monitoring eth0... (press CTRL-C to stop)
rx: 4.34 kbit/s 7 p/s tx: 37.90 kbit/s 11 p/s
流量报警
$ vnstat --alert 1 3 d total 5 GiB eth0
$ docker exec vnstat vnstat --alert 1 3 d total 5 GiB eth0
eth0 at 2023-07-14 10:45:00 for day 2023-07-14
[=-.........................................................]
daily | total | percentage | avg. rate
----------+------------------+----------------+--------------
used | 81.80 MiB | 1.6% | 17.73 kbit/s
limit | 5.00 GiB | | 497.10 kbit/s
remaining | 4.92 GiB | 98.4% |
----------+------------------+----------------+--------------
estimated | 182.51 MiB | 3.6% | 17.73 kbit/s
网页访问
浏览器打开 http://127.0.0.1:8685