【Docker项目实战】使用Docker部署vnStat网络流量监视器
一、vnStat介绍
1.1 vnStat简介
vnStat 是一个轻量级的网络流量监控工具,专为Linux/Unix系统设计。与传统的网络监控工具不同,vnStat 不直接捕获或分析网络数据包,而是定期读取系统的网络接口统计信息来计算流量。这种方法使得 vnStat 即使在网络流量非常大的情况下也能保持较低的系统资源占用率。
1.2 主要特点
- 低资源消耗:vnStat 设计得非常高效,对CPU和内存的需求极低,适合在资源受限的设备上运行。
- 无需嗅探:如前所述,vnStat 不需要进行数据包嗅探,这不仅提高了安全性,也减少了对系统性能的影响。
- 易于安装和配置:vnStat 的安装过程简单,配置文件也相对容易理解,适合初学者使用。
- 支持多种数据库格式:可以使用SQLite或者简单的文本文件来存储统计数据,灵活性较高。
- 多样的输出选项:可以通过命令行获取各种形式的报告,包括HTML页面、CSV文件等,方便用户查看和分析数据。
- 定时任务支持:可以通过cron作业自动更新统计信息,保证数据的实时性和准确性。
- 支持多个网络接口:可以同时监控多个网络接口的流量,适应复杂的网络环境。
1.3 主要使用场景
- 服务器流量监控:对于托管服务提供商或者拥有自己的服务器的个人来说,使用vnStat可以帮助他们监控服务器的网络流量,从而更好地了解带宽使用情况,避免超额使用。
- 家庭网络管理:家庭用户可以利用vnStat来监控家庭网络中的流量使用情况,帮助家长了解孩子上网的习惯,或者发现潜在的安全问题。
- 小型企业网络流量审计:小到中型企业可以通过vnStat来审计内部网络的流量使用,确保网络资源的有效利用,同时也能够及时发现异常流量,提高网络安全。
- 研究和教育:网络管理员、研究人员以及学生可以使用vnStat来进行网络流量的研究,学习网络协议和流量模式。
- 远程站点监控:对于远程或无人值守的站点,vnStat 可以通过定时发送报告的方式,让管理员远程掌握这些站点的网络状况。
二、本次实践规划
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为|Ubuntu 22.04.1。
hostname | IP地址 | 操作系统版本 | Docker版本 | 镜像版本 |
---|---|---|---|---|
jeven01 | 192.168.3.88 | Ubuntu 22.04.1 LTS | 27.1.1 | latest |
2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署vnStat网络流量监视器
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
root@jeven01:~# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2024-11-01 00:45:50 CST; 2 weeks 4 days ago
Docs: https://docs.docker.com
Main PID: 10450 (dockerd)
Tasks: 60 (limit: 9387)
Memory: 1.8G
CPU: 33min 54.335s
CGroup: /system.slice/docker.service
3.2 检查Docker版本
检查Docker版本
root@jeven01:~# docker -v
Docker version 27.1.1, build 6312585
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
root@jeven01:~# docker compose version
Docker Compose version v2.19.1
四、下载vnStat镜像
拉取vnStat镜像,镜像名称为:
vergoh/vnsta:latestt
。
root@jeven01:~# docker pull vergoh/vnstat
Using default tag: latest
latest: Pulling from vergoh/vnstat
Digest: sha256:8b55c1d3c9a10fabbecd64c9e2b30b316924fa4bfbdb413c2813ab8bf527aaee
Status: Image is up to date for vergoh/vnstat:latest
docker.io/vergoh/vnstat:latest
五、部署vnStat应用
5.1 创建部署目录
- 创建部署目录
mkdir -p /data/vnStat && cd /data/vnStat
5.2 编辑部署文件
- 如果使用docker-cli部署,可参考以下命令:
docker run -d \
--restart=always \
--name vnstat \
--network=host \
-e HTTP_PORT=8685 \
-e TZ=Asia/shanghai \
-e EXCLUDE_PATTERN=^br \
vergoh/vnstat
在`部署目录下,创建docker-compose.yaml文件,如下所示:
vim docker-compose.yaml
version: '3'
services:
vnstat:
image: vergoh/vnstat
container_name: vnstat
restart: always
network_mode: host
environment:
- HTTP_PORT=8685
- TZ=Asia/shanghai
- EXCLUDE_PATTERN=^br
- 相关环境变量介绍
名称 | 描述 | 默认值 |
---|---|---|
HTTP_PORT | HTTP 服务器的端口号,设置为 0 可禁用 HTTP 服务器 | 8685 |
HTTP_BIND | HTTP 服务器绑定的 IP 地址,使用 127.0.0.1 仅绑定到本地主机并禁止远程访问 | *, 所有地址 |
HTTP_LOG | HTTP 服务器的日志输出文件,使用 /dev/stdout 输出到控制台,使用 /dev/null 禁用日志 |
/dev/stdout |
SERVER_NAME | 网页标题中的服务器名称 | 当前主机名 |
LARGE_FONTS | 图像中使用大字体(0: 否,1: 是) | 0 |
CACHE_TIME | 缓存创建的图像的时间(单位:分钟),设置为 0 可禁用缓存 | 1 |
DARK_MODE | 黑色背景和反转图像颜色,0: 禁用,1: 启用但不反转收发颜色,2: 全部颜色反转(从版本 2.12 开始可用) | 0 |
PAGE_REFRESH | 页面自动刷新间隔(单位:秒),设置为 0 可禁用自动刷新 | 0 |
RUN_VNSTATD | 是否启动 vnStat 守护进程(0: 否,1: 是) | 1 |
INDEX_IMAGES_PER_ROW | 当数据库包含多个接口时,索引页面每行显示的图像数量(1000: 自动适应)(从版本 2.13 开始可用) | 1 |
INDEX_IMAGE_OUTPUT | 当数据库包含多个接口时,索引页面使用的图像输出类型(从版本 2.13 开始可用) | hs |
INDEX_SHOWN_INTERFACES | 正则表达式模式,用于选择在索引页面上显示的接口(留空或未设置则禁用过滤)。未显示的接口仍将被监控(从版本 2.13 开始可用) | 未设置 |
INDEX_HIDDEN_INTERFACES | 正则表达式模式,用于选择在索引页面上隐藏的接口(留空或未设置则禁用过滤)。隐藏的接口仍将被监控(从版本 2.13 开始可用) | 未设置 |
EXCLUDE_PATTERN | 扩展正则表达式模式,用于排除某些接口的监控。例如,^docker|^veth|^br-|^lxc 会排除以 docker 、veth 、br- 和 lxc 开头的接口 |
未设置 |
TZ | 设置时区(支持的时区列表),覆盖可能来自 /etc/localtime 和 /etc/timezone 卷的配置 |
未设置 |
VNSTAT_ 前缀 | 所有 vnstat.conf 配置项都可以通过使用 VNSTAT_ 前缀的环境变量进行修改,后跟配置关键字。例如,将接收数据的颜色 (CRx ) 设置为淡青色(79C999 )可以通过定义 VNSTAT_CRx=79C999 来实现。变量名区分大小写 |
未设置 |
5.3 创建vnStat容器
执行以下命令,创建vnStat容器。
root@jeven01:/data/vnStat# docker compose up -d
[+] Running 1/1
✔ Container vnstat Started 0.2s
5.4 查看vnStat容器状态
检查vnStat容器状态状态,确保vnStat容器正常启动。
root@jeven01:/data/vnStat# docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
vnstat vergoh/vnstat "/start.sh" vnstat 20 seconds ago Up 19 seconds
5.5 查看vnStat容器日志
检查vnStat容器日志,确保vnStat服务正常运行。
docker compose logs
六、访问vnStat服务
请访问
http://<个人的服务器IP>:8685
查看vnStat的流量统计页面。如果无法访问,请确保宿主机的防火墙已关闭或已放行8685端口,对于云服务器还需配置相应的安全组规则。vnStat 默认以过去48小时的五分钟级别、过去4天的每小时级别、过去2个月的每日级别和永久的年度级别存储流量统计信息,数据保留期限可由用户自定义配置。此外,vnStat 还提供了总流量统计和热门天数列表,方便用户全面了解网络使用情况。
七、总结
在使用Docker部署vnStat的过程中,我们体验到了容器化技术带来的便捷性和高效性。vnStat在Docker容器中运行稳定,资源占用低,能够准确地监控网络流量。通过Docker-compose文件,我们轻松配置了vnStat的服务,实现了自动化部署和管理。总体而言,这次实践不仅提升了我们的技术能力,也为实际生产环境中的网络流量监控提供了可靠的解决方案。
- 点赞
- 收藏
- 关注作者
评论(0)