docker实践:使用Docker部署vnStat网络流量监视器
- 1.1 vnStat简介
- 1.2 主要特点
- 1.3 主要使用场景
- 2.1 本地环境规划
- 2.2 本次实践介绍
- 3.1 检查Docker服务状态
- 3.2 检查Docker版本
- 3.3 检查docker compose 版本
- 5.1 创建部署目录
- 5.2 编辑部署文件
- 5.3 创建vnStat容器
- 5.4 查看vnStat容器状态
- 5.5 查看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:latest
。
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的服务,实现了自动化部署和管理。总体而言,这次实践不仅提升了我们的技术能力,也为实际生产环境中的网络流量监控提供了可靠的解决方案。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
,