构建
docker buildx build --platform linux/arm64,linux/amd64 -t lihaixin/vnstat . --push
vnstat
vnStat vnStat 是一个网络流量监视器,它使用内核提供的网络接口统计信息作为信息源。这意味着 vnStat 实际上不会嗅探任何流量,并且无论网络流量率如何,都可以确保少量使用系统资源。
默认情况下,流量统计信息存储在过去 48 小时的 5 分钟级别、过去 4 天的每小时级别、过去 2 整个月的每日级别以及永远的年度级别。数据保留持续时间完全由用户配置。还提供了总看到流量和前几天列表。
功能
- vnStat 守护进程 ( vnstatd) 作为主进程运行
- lighttpdvnstati通过 http提供 vnStat 图像输出 ( )(默认情况下所有接口上的端口 8685)
- vnStat 命令行 ( vnstat)
- crond 监控是否超流量
- tc 超流量限速度到1m
终端
__ __ _
\ \ / / | |
\ \ /\ / / ___ | | ___ ___ _ __ ___ ___
\ \/ \/ / / _ \ | | / __| / _ \ | '_ ` _ \ / _ \
\ /\ / | __/ | | | (__ | (_) | | | | | | | | __/
\/ \/ \___| |_| \___| \___/ |_| |_| |_| \___|
_ _ ___ _ _
(_) (_) |__ \ | | (_)
___ __ _ _ __ _ _ _ __ ______ _ _ ___ ) | ______ | |__ _ _ __ _ _ _ _
/ __| / _` | | '_ \ | | | | | '_ \ |______| | | | | / __| / / |______| | '_ \ | | | | / _` | | | | | | |
\__ \ | (_| | | | | | | | | | | | | | | |_| | \__ \ / /_ | | | | | |_| | | (_| | | |_| | | |
|___/ \__,_| |_| |_| | | |_| |_| |_| \__,_| |___/ |____| |_| |_| \__,_| \__,_| \__, | |_|
_/ | __/ |
|__/ |___/
# ------------------------------------------------------------------------------------------------------------ #
ens5 / monthly
month rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
2022-07 298.94 GiB | 385.04 GiB | 683.99 GiB | 2.19 Mbit/s
2022-08 374.10 GiB | 491.41 GiB | 865.51 GiB | 2.78 Mbit/s
2022-09 204.69 GiB | 206.64 GiB | 411.33 GiB | 2.42 Mbit/s
------------------------+-------------+-------------+---------------
estimated 362.67 GiB | 366.13 GiB | 728.80 GiB |
# ------------------------------------------------------------------------------------------------------------ #
# 查看每月流量 输入 <vnstat -m>
# 查看每日流量 输入 <vnstat -d>
# 查看5秒实时浏览 输入 <vnstat -tr>
# 查看接口列表 输入 <vnstat --iflist>
# 删除Docker接口 输入 <vnstat -i docker0 --remove --force>
# 更多vnstat设置 输入 <vnstat --longhelp>
# 查看带宽限制 输入 <view_limit>
# 取消带宽限制 输入 <cancel_limit>
# 测试主机速度 输入 <speed>
# ------------------------------------------------------------------------------------------------------------ #
安装
CLI 安装
docker run -d --name vnstat \
--restart=unless-stopped \
--net host \
--privileged \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
-v vnstatdb:/var/lib/vnstat \
-e QQ=*** \
-e MAXTX=1.8 \
-e MAXALL=4.0 \
-e MAXLIMTYPE=TiB \
lihaixin/vnstat
docker exec vnstat bash
>>> vnstat --help
>>> vnstati --help
>>> exit
docker-compose.yml 限制月流量2T模板
version: "3.7"
services:
vnstat:
image: lihaixin/vnstat:latest
container_name: vnstat
restart: unless-stopped
network_mode: "host"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- vnstatdb:/var/lib/vnstat
environment:
- QQ=****** # 终端显示你的联系方式
- HTTP_PORT=0 # http服务器端口,或者调整8685,用于0禁用http服务器
- HTTP_BIND=* # 用于绑定http服务器的IP地址,用于127.0.0.1仅绑定到本地主机并防止远程访问
- HTTP_LOG=/dev/stdout # Http服务器日志输出文件,/dev/stdout用于输出到控制台和/dev/null禁用日志记录
- LARGE_FONTS=0 # 在图像中使用大字体(0:否,1:是)
- CACHE_TIME=1 # 在给定的分钟数内缓存创建的图像(0:禁用)
- RATE_UNIT=1 # 使用的流量速率单位,0:字节,1:比特
- PAGE_REFRESH=0 # 页面自动刷新间隔以秒为单位(0:禁用)
- MAXTX=1.8 # 最大传出流量,默认为G
- MAXALL=3.5 # 进出双向最大流量.默认为G
- MAXLIMTYPE=TiB # 流量统计单位
- RATE=1mbit # 流量超过设定值后限制最大的带宽
- BURST=2kb # 令牌桶的大小
- LATENCY=50ms # 数据请求超过令牌通,等待多久的延迟,如果延迟时间到,还没有令牌,就丢弃
volumes:
vnstatdb:
docker-compose.yml 限制月流量1T模板
version: "3.7"
services:
vnstat:
image: lihaixin/vnstat:latest
container_name: vnstat
restart: unless-stopped
network_mode: "host"
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- vnstatdb:/var/lib/vnstat
environment:
- QQ=****** # 终端显示你的联系方式
- HTTP_PORT=0 # http服务器端口,或者调整8685,用于0禁用http服务器
- HTTP_BIND=* # 用于绑定http服务器的IP地址,用于127.0.0.1仅绑定到本地主机并防止远程访问
- HTTP_LOG=/dev/stdout # Http服务器日志输出文件,/dev/stdout用于输出到控制台和/dev/null禁用日志记录
- LARGE_FONTS=0 # 在图像中使用大字体(0:否,1:是)
- CACHE_TIME=1 # 在给定的分钟数内缓存创建的图像(0:禁用)
- RATE_UNIT=1 # 使用的流量速率单位,0:字节,1:比特
- PAGE_REFRESH=0 # 页面自动刷新间隔以秒为单位(0:禁用)
- MAXTX=800 # 最大传出流量,默认为G
- MAXALL=1500 # 进出双向最大流量.默认为G
- MAXLIMTYPE=GiB # 流量统计单位
- RATE=1mbit # 流量超过设定值后限制最大的带宽
- BURST=2kb # 令牌桶的大小
- LATENCY=50ms # 数据请求超过令牌通,等待多久的延迟,如果延迟时间到,还没有令牌,就丢弃
volumes:
vnstatdb: