vnStat 是一个轻量级的网络流量监控工具,专为Linux/Unix系统设计。与传统的网络监控工具不同,vnStat 不直接捕获或分析网络数据包,而是定期读取系统的网络接口统计信息来计算流量。这种方法使得 vnStat 即使在网络流量非常大的情况下也能保持较低的系统资源占用率。
本次实践为个人测试环境,操作系统版本为|Ubuntu 22.04.1。
hostname | IP地址 | 操作系统版本 | Docker版本 | 镜像版本 |
---|---|---|---|---|
jeven01 | 192.168.3.88 | Ubuntu 22.04.1 LTS | 27.1.1 | latest |
1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.在Docker环境下部署vnStat网络流量监视器
检查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
检查Docker版本
root@jeven01:~# docker -v
Docker version 27.1.1, build 6312585
检查Docker compose版本,确保2.0以上版本。
root@jeven01:~# docker compose version
Docker Compose version v2.19.1
拉取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
mkdir -p /data/vnStat && cd /data/vnStat
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 服务器的日志输出文件,使用 |
|
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 | 扩展正则表达式模式,用于排除某些接口的监控。例如, | 未设置 |
TZ | 设置时区(支持的时区列表),覆盖可能来自 | 未设置 |
VNSTAT_ 前缀 | 所有 | 未设置 |
执行以下命令,创建vnStat容器。
root@jeven01:/data/vnStat# docker compose up -d
[+] Running 1/1
✔ Container vnstat Started 0.2s
检查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
检查vnStat容器日志,确保vnStat服务正常运行。
docker compose logs
请访问
http://<个人的服务器IP>:8685
查看vnStat的流量统计页面。如果无法访问,请确保宿主机的防火墙已关闭或已放行8685端口,对于云服务器还需配置相应的安全组规则。vnStat 默认以过去48小时的五分钟级别、过去4天的每小时级别、过去2个月的每日级别和永久的年度级别存储流量统计信息,数据保留期限可由用户自定义配置。此外,vnStat 还提供了总流量统计和热门天数列表,方便用户全面了解网络使用情况。
在使用Docker部署vnStat的过程中,我们体验到了容器化技术带来的便捷性和高效性。vnStat在Docker容器中运行稳定,资源占用低,能够准确地监控网络流量。通过Docker-compose文件,我们轻松配置了vnStat的服务,实现了自动化部署和管理。总体而言,这次实践不仅提升了我们的技术能力,也为实际生产环境中的网络流量监控提供了可靠的解决方案。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。