一、项目速览

vnStat(项目地址:https://github.com/vergoh/vnstat-docker)是一款基于Linux内核统计数据的轻量级网络监控工具。它就像给你的服务器装了个”流量透视眼”,无需抓包分析就能实时掌握每个网卡的带宽使用情况!

二、四大核心优势

  1. 零资源消耗:直接读取/proc伪文件系统数据,内存占用不到10MB
  2. 数据持久化:自动保存48小时内5分钟粒度数据+2个月日粒度数据
  3. 监控维度全:支持JSON/Prometheus格式输出,完美对接可视化大屏
  4. 容器友好:原生支持过滤docker虚拟网卡,避免监控数据污染

三、Dockge极简部署方案

用这个docker-compose.yaml文件完成部署:

1
2
3
4
5
6
7
8
9
10
11
12
13
version: "3.3"
services:
vnstat:
restart: unless-stopped
network_mode: host
environment:
- HTTP_PORT=8685
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
container_name: vnstat
image: vergoh/vnstat
networks: {}

部署完成后浏览器访问 http://你的服务器IP:8685,马上看到这样的清爽界面:

img

四、高阶玩法揭秘

1. 精准监控单个容器

假设要监控zentao容器的流量,执行以下命令获取网卡ID:

1
2
3
docker network ls | grep zentao
docker network inspect 网卡ID前8位 | grep Gateway
ip addr | grep '网关IP'

将获取的网卡ID(如docker-144f6cdd)添加到监控列表:

1
2
docker exec vnstat vnstat -i docker-144f6cdd --add
docker exec vnstat vnstat -i docker-144f6cdd --setalias "禅道系统"

2. 生成流量报告

访问 http://IP:8685/json.cgi 获取JSON格式数据,配合Grafana可以生成这样的炫酷看板:

img

五、避坑指南

  1. 数据延迟问题:新添加的监控对象需要等待5-10分钟才会显示数据
  2. 网卡过滤技巧:EXCLUDE_PATTERN参数支持正则表达式,可设置如^docker|^veth过滤多种虚拟接口
  3. 历史数据迁移:将旧服务器的/var/lib/vnstat目录挂载到容器内即可继承监控记录

六、总结推荐

项目适合人群:
✅ 家庭NAS玩家 ✅ 中小运维团队 ✅ 云服务器管理员❌ 需要秒级监控的金融交易系统 ❌ 超大规模容器集群