docker實踐:使用Docker部署vnStat網(wǎng)絡流量監(jiān)視器

  • 1.1 vnStat簡介
  • 1.2 主要特點
  • 1.3 主要使用場景
  • 2.1 本地環(huán)境規(guī)劃
  • 2.2 本次實踐介紹
  • 3.1 檢查Docker服務狀態(tài)
  • 3.2 檢查Docker版本
  • 3.3 檢查docker compose 版本
  • 5.1 創(chuàng)建部署目錄
  • 5.2 編輯部署文件
  • 5.3 創(chuàng)建vnStat容器
  • 5.4 查看vnStat容器狀態(tài)
  • 5.5 查看vnStat容器日志

一、vnStat介紹

1.1 vnStat簡介

vnStat 是一個輕量級的網(wǎng)絡流量監(jiān)控工具,專為Linux/Unix系統(tǒng)設計。與傳統(tǒng)的網(wǎng)絡監(jiān)控工具不同,vnStat 不直接捕獲或分析網(wǎng)絡數(shù)據(jù)包,而是定期讀取系統(tǒng)的網(wǎng)絡接口統(tǒng)計信息來計算流量。這種方法使得 vnStat 即使在網(wǎng)絡流量非常大的情況下也能保持較低的系統(tǒng)資源占用率。

1.2 主要特點

  • 低資源消耗:vnStat 設計得非常高效,對CPU和內(nèi)存的需求極低,適合在資源受限的設備上運行。
  • 無需嗅探:如前所述,vnStat 不需要進行數(shù)據(jù)包嗅探,這不僅提高了安全性,也減少了對系統(tǒng)性能的影響。
  • 易于安裝和配置:vnStat 的安裝過程簡單,配置文件也相對容易理解,適合初學者使用。
  • 支持多種數(shù)據(jù)庫格式:可以使用SQLite或者簡單的文本文件來存儲統(tǒng)計數(shù)據(jù),靈活性較高。
  • 多樣的輸出選項:可以通過命令行獲取各種形式的報告,包括HTML頁面、CSV文件等,方便用戶查看和分析數(shù)據(jù)。
  • 定時任務支持:可以通過cron作業(yè)自動更新統(tǒng)計信息,保證數(shù)據(jù)的實時性和準確性。
  • 支持多個網(wǎng)絡接口:可以同時監(jiān)控多個網(wǎng)絡接口的流量,適應復雜的網(wǎng)絡環(huán)境。

1.3 主要使用場景

  1. 服務器流量監(jiān)控:對于托管服務提供商或者擁有自己的服務器的個人來說,使用vnStat可以幫助他們監(jiān)控服務器的網(wǎng)絡流量,從而更好地了解帶寬使用情況,避免超額使用。
  2. 家庭網(wǎng)絡管理:家庭用戶可以利用vnStat來監(jiān)控家庭網(wǎng)絡中的流量使用情況,幫助家長了解孩子上網(wǎng)的習慣,或者發(fā)現(xiàn)潛在的安全問題。
  3. 小型企業(yè)網(wǎng)絡流量審計:小到中型企業(yè)可以通過vnStat來審計內(nèi)部網(wǎng)絡的流量使用,確保網(wǎng)絡資源的有效利用,同時也能夠及時發(fā)現(xiàn)異常流量,提高網(wǎng)絡安全。
  4. 研究和教育:網(wǎng)絡管理員、研究人員以及學生可以使用vnStat來進行網(wǎng)絡流量的研究,學習網(wǎng)絡協(xié)議和流量模式。
  5. 遠程站點監(jiān)控:對于遠程或無人值守的站點,vnStat 可以通過定時發(fā)送報告的方式,讓管理員遠程掌握這些站點的網(wǎng)絡狀況。

二、本次實踐規(guī)劃

2.1 本地環(huán)境規(guī)劃

本次實踐為個人測試環(huán)境,操作系統(tǒng)版本為|Ubuntu 22.04.1。

hostname IP地址 操作系統(tǒng)版本 Docker版本 鏡像版本 jeven01 192.168.3.88 Ubuntu 22.04.1 LTS 27.1.1 latest

2.2 本次實踐介紹

1.本次實踐部署環(huán)境為個人測試環(huán)境,生產(chǎn)環(huán)境請謹慎; 2.在Docker環(huán)境下部署vnStat網(wǎng)絡流量監(jiān)視器

三、本地環(huán)境檢查

3.1 檢查Docker服務狀態(tài)

檢查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 創(chuàng)建部署目錄

  • 創(chuàng)建部署目錄

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

在`部署目錄下,創(chuàng)建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

  • 相關(guān)環(huán)境變量介紹

名稱 描述 默認值 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 網(wǎng)頁標題中的服務器名稱 當前主機名 LARGE_FONTS 圖像中使用大字體(0: 否,1: 是) 0 CACHE_TIME 緩存創(chuàng)建的圖像的時間(單位:分鐘),設置為 0 可禁用緩存 1 DARK_MODE 黑色背景和反轉(zhuǎn)圖像顏色,0: 禁用,1: 啟用但不反轉(zhuǎn)收發(fā)顏色,2: 全部顏色反轉(zhuǎn)(從版本 2.12 開始可用) 0 PAGE_REFRESH 頁面自動刷新間隔(單位:秒),設置為 0 可禁用自動刷新 0 RUN_VNSTATD 是否啟動 vnStat 守護進程(0: 否,1: 是) 1 INDEX_IMAGES_PER_ROW 當數(shù)據(jù)庫包含多個接口時,索引頁面每行顯示的圖像數(shù)量(1000: 自動適應)(從版本 2.13 開始可用) 1 INDEX_IMAGE_OUTPUT 當數(shù)據(jù)庫包含多個接口時,索引頁面使用的圖像輸出類型(從版本 2.13 開始可用) hs INDEX_SHOWN_INTERFACES 正則表達式模式,用于選擇在索引頁面上顯示的接口(留空或未設置則禁用過濾)。未顯示的接口仍將被監(jiān)控(從版本 2.13 開始可用) 未設置 INDEX_HIDDEN_INTERFACES 正則表達式模式,用于選擇在索引頁面上隱藏的接口(留空或未設置則禁用過濾)。隱藏的接口仍將被監(jiān)控(從版本 2.13 開始可用) 未設置 EXCLUDE_PATTERN 擴展正則表達式模式,用于排除某些接口的監(jiān)控。例如,^docker|^veth|^br-|^lxc 會排除以 docker、vethbr-lxc 開頭的接口 未設置 TZ 設置時區(qū)(支持的時區(qū)列表),覆蓋可能來自 /etc/localtime/etc/timezone 卷的配置 未設置 VNSTAT_ 前綴 所有 vnstat.conf 配置項都可以通過使用 VNSTAT_ 前綴的環(huán)境變量進行修改,后跟配置關(guān)鍵字。例如,將接收數(shù)據(jù)的顏色 (CRx) 設置為淡青色(79C999)可以通過定義 VNSTAT_CRx=79C999 來實現(xiàn)。變量名區(qū)分大小寫 未設置

5.3 創(chuàng)建vnStat容器

執(zhí)行以下命令,創(chuàng)建vnStat容器。

root@jeven01:/data/vnStat# docker compose up -d [+] Running 1/1 Container vnstat Started 0.2s

5.4 查看vnStat容器狀態(tài)

檢查vnStat容器狀態(tài)狀態(tài),確保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 Docker實踐:使用Docker部署vnStat網(wǎng)絡流量監(jiān)視器在這里插入圖片描述

在這里插入圖片描述

六、訪問vnStat服務

請訪問 http://<個人的服務器IP>:8685 查看vnStat的流量統(tǒng)計頁面。如果無法訪問,請確保宿主機的防火墻已關(guān)閉或已放行8685端口,對于云服務器還需配置相應的安全組規(guī)則。vnStat 默認以過去48小時的五分鐘級別、過去4天的每小時級別、過去2個月的每日級別和永久的年度級別存儲流量統(tǒng)計信息,數(shù)據(jù)保留期限可由用戶自定義配置。此外,vnStat 還提供了總流量統(tǒng)計和熱門天數(shù)列表,方便用戶全面了解網(wǎng)絡使用情況。

Docker實踐:使用Docker部署vnStat網(wǎng)絡流量監(jiān)視器在這里插入圖片描述

七、總結(jié)

在使用Docker部署vnStat的過程中,我們體驗到了容器化技術(shù)帶來的便捷性和高效性。vnStat在Docker容器中運行穩(wěn)定,資源占用低,能夠準確地監(jiān)控網(wǎng)絡流量。通過Docker-compose文件,我們輕松配置了vnStat的服務,實現(xiàn)了自動化部署和管理??傮w而言,這次實踐不僅提升了我們的技術(shù)能力,也為實際生產(chǎn)環(huán)境中的網(wǎng)絡流量監(jiān)控提供了可靠的解決方案。

作者聲明本文無利益相關(guān),歡迎值友理性交流,和諧討論~

,

聲明:本站所有文章,如無特殊說明或標注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進行處理。