前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >【Docker项目实战】使用Docker部署vnStat网络流量监视器

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

原创
作者头像
江湖有缘
发布2025-01-05 19:00:14
发布2025-01-05 19:00:14
1600
举报
文章被收录于专栏:Linux成长之路Linux成长之路

一、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正常运行。

代码语言:bash
复制
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版本

代码语言:bash
复制
root@jeven01:~# docker -v
Docker version 27.1.1, build 6312585

3.3 检查docker compose 版本

检查Docker compose版本,确保2.0以上版本。

代码语言:bash
复制
root@jeven01:~# docker compose version
Docker Compose version v2.19.1

四、下载vnStat镜像

拉取vnStat镜像,镜像名称为:vergoh/vnsta:latestt

代码语言:bash
复制
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 创建部署目录

  • 创建部署目录
代码语言:bash
复制
mkdir -p /data/vnStat && cd /data/vnStat

5.2 编辑部署文件

  • 如果使用docker-cli部署,可参考以下命令:
代码语言:bash
复制
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文件,如下所示:

代码语言:bash
复制
vim docker-compose.yaml
代码语言: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容器。

代码语言:bash
复制
root@jeven01:/data/vnStat# docker compose up -d
[+] Running 1/1
 ✔ Container vnstat  Started                                                                                        0.2s

5.4 查看vnStat容器状态

检查vnStat容器状态状态,确保vnStat容器正常启动。

代码语言:bash
复制
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服务正常运行。

代码语言:bash
复制
docker compose logs

六、访问vnStat服务

请访问 http://<个人的服务器IP>:8685 查看vnStat的流量统计页面。如果无法访问,请确保宿主机的防火墙已关闭或已放行8685端口,对于云服务器还需配置相应的安全组规则。vnStat 默认以过去48小时的五分钟级别、过去4天的每小时级别、过去2个月的每日级别和永久的年度级别存储流量统计信息,数据保留期限可由用户自定义配置。此外,vnStat 还提供了总流量统计和热门天数列表,方便用户全面了解网络使用情况。

七、总结

在使用Docker部署vnStat的过程中,我们体验到了容器化技术带来的便捷性和高效性。vnStat在Docker容器中运行稳定,资源占用低,能够准确地监控网络流量。通过Docker-compose文件,我们轻松配置了vnStat的服务,实现了自动化部署和管理。总体而言,这次实践不仅提升了我们的技术能力,也为实际生产环境中的网络流量监控提供了可靠的解决方案。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、vnStat介绍
    • 1.1 vnStat简介
    • 1.2 主要特点
    • 1.3 主要使用场景
  • 二、本次实践规划
    • 2.1 本地环境规划
    • 2.2 本次实践介绍
  • 三、本地环境检查
    • 3.1 检查Docker服务状态
    • 3.2 检查Docker版本
    • 3.3 检查docker compose 版本
  • 四、下载vnStat镜像
  • 五、部署vnStat应用
    • 5.1 创建部署目录
    • 5.2 编辑部署文件
    • 5.3 创建vnStat容器
    • 5.4 查看vnStat容器状态
    • 5.5 查看vnStat容器日志
  • 六、访问vnStat服务
  • 七、总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档