2021-12 通过 Docker 部署 vnStat 监控主机流量使用

KevinShiCN · 文章

2021-12 通过 Docker 部署 vnStat 监控主机流量使用

简介

vnStat 项目地址

Docker 地址

vnStat 是一款老牌的 Linux 系统流量监控工具。由于我之前做的一个项目需要监控服务器的流量使用,使我最后找到了它。

vnStat 的优点在于便捷部署加轻松使用。它不仅能够从全局监控流量,更能监控不同的 Docker 容器使用的流量。是一款非常轻量的神器

安装

由于是 Docker 部署,这里跳过 Docker 相关安装步骤,如需要请移步我的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

很简单,一段这样的命令运行之后,vnStat 就能够运行了

vnStat安装
vnStat安装

使用方式

以图片形式输出数据

安装完成之后我们通过访问http://你的服务器ip:8685即可进入默认的 vnStat 界面

vnStat默认显示界面
vnStat默认显示界面

其中

点击 eth0 我们就能够进入 eth0 这个网卡的详细流量数据

eth0网卡数据
eth0网卡数据

之后我们还可以点击不同区域来进入不同的时间区间视图

eth0网卡的5分钟数据
eth0网卡的5分钟数据

以控制台控制输出

在主机中,我们可以通过如下命令直接将指令传输到 vnStat 的容器中已实现通过控制台访问数据

docker exec vnstat vnstat --longhelp

这里可以通过修改--longhelp 来实现各种命令

longhelp界面
longhelp界面

例-5 就是展示最近 5 分钟的流量情况

docker exec vnstat vnstat -5
通过控制台查看5分钟流量
通过控制台查看5分钟流量

以 Json 形式输出数据

在我们原先访问的图形地址http://你的服务器ip:8685后面加入/json.cgi之后我们就能够以 Json 的形式返回响应的流量参数。

json字符串返回
json字符串返回

跟控制台一样,如果需要看更详细的数据,是需要我们进一步更改访问地址的。

使用方法

添加一个网卡

由于 vnStat 只会自动添加首次部署时候的所有网卡,因此新的 Docker 容器需要通过下面步骤将其添加进监控列表

检查是否有新增的可添加的网卡
docker exec vnstat vnstat --iflist
查询网卡结果
查询网卡结果
将尚未添加的网卡增加到监控
docker exec vnstat vnstat -i 网卡名称 --add
重启服务
docker exec vnstat killall -HUP vnstatd

移除一个网卡

对于不再需要监控的网卡,我们可以通过如下指令来移除

docker exec vnstat vnstat -i 网卡名称 --remove --force

给网卡添加备注

如网卡开始多起来之后,查询名称会变得不方便,因此我们可以通过如下指令将原本为字符串的网卡名称改为可识别的叫法

docker exec vnstat vnstat -i eth0 --setalias "Network_Main"
更改备注名结果
更改备注名结果
更改备注名后效果
更改备注名后效果

注意事项

数据备份

在 Docker 运行的时候添加-v 主机地址路径:/var/lib/vnstat能够确保 vnStat 的数据直接保存到主机中。这确保我们能够在重装容器的时候保证数据连贯性。

推荐阅读

---

欢迎关注我的公众号“凯文有事找你”,原创技术生活经验教训文章第一时间推送。

<center> <img src="https://oss.kevinshicn.com/zhouji/04/%E5%85%AC%E4%BC%97%E5%8F%B7%E4%BA%8C%E7%BB%B4%E7%A0%81.png?x-oss-process=style/Interlace" style="width: 100px;"> </center>