【Docker项目实战】使用Docker部署vnStat网络流量监视器

举报
江湖有缘 发表于 2024/12/30 18:16:53 2024/12/30
【摘要】 【Docker项目实战】使用Docker部署vnStat网络流量监视器

一、vnStat介绍

1.1 vnStat简介

vnStat 是一个轻量级的网络流量监控工具,专为Linux/Unix系统设计。与传统的网络监控工具不同,vnStat 不直接捕获或分析网络数据包,而是定期读取系统的网络接口统计信息来计算流量。这种方法使得 vnStat 即使在网络流量非常大的情况下也能保持较低的系统资源占用率。

1.2 主要特点

  • 低资源消耗:vnStat 设计得非常高效,对CPU和内存的需求极低,适合在资源受限的设备上运行。
  • 无需嗅探:如前所述,vnStat 不需要进行数据包嗅探,这不仅提高了安全性,也减少了对系统性能的影响。
  • 易于安装和配置:vnStat 的安装过程简单,配置文件也相对容易理解,适合初学者使用。
  • 支持多种数据库格式:可以使用SQLite或者简单的文本文件来存储统计数据,灵活性较高。
  • 多样的输出选项:可以通过命令行获取各种形式的报告,包括HTML页面、CSV文件等,方便用户查看和分析数据。
  • 定时任务支持:可以通过cron作业自动更新统计信息,保证数据的实时性和准确性。
  • 支持多个网络接口:可以同时监控多个网络接口的流量,适应复杂的网络环境。

1.3 主要使用场景

  1. 服务器流量监控:对于托管服务提供商或者拥有自己的服务器的个人来说,使用vnStat可以帮助他们监控服务器的网络流量,从而更好地了解带宽使用情况,避免超额使用。
  2. 家庭网络管理:家庭用户可以利用vnStat来监控家庭网络中的流量使用情况,帮助家长了解孩子上网的习惯,或者发现潜在的安全问题。
  3. 小型企业网络流量审计:小到中型企业可以通过vnStat来审计内部网络的流量使用,确保网络资源的有效利用,同时也能够及时发现异常流量,提高网络安全。
  4. 研究和教育:网络管理员、研究人员以及学生可以使用vnStat来进行网络流量的研究,学习网络协议和流量模式。
  5. 远程站点监控:对于远程或无人值守的站点,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 会排除以 dockervethbr-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的服务,实现了自动化部署和管理。总体而言,这次实践不仅提升了我们的技术能力,也为实际生产环境中的网络流量监控提供了可靠的解决方案。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。