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 主要使用場景
- 服務器流量監(jiān)控:對于托管服務提供商或者擁有自己的服務器的個人來說,使用vnStat可以幫助他們監(jiān)控服務器的網(wǎng)絡流量,從而更好地了解帶寬使用情況,避免超額使用。
- 家庭網(wǎng)絡管理:家庭用戶可以利用vnStat來監(jiān)控家庭網(wǎng)絡中的流量使用情況,幫助家長了解孩子上網(wǎng)的習慣,或者發(fā)現(xiàn)潛在的安全問題。
- 小型企業(yè)網(wǎng)絡流量審計:小到中型企業(yè)可以通過vnStat來審計內(nèi)部網(wǎng)絡的流量使用,確保網(wǎng)絡資源的有效利用,同時也能夠及時發(fā)現(xiàn)異常流量,提高網(wǎng)絡安全。
- 研究和教育:網(wǎng)絡管理員、研究人員以及學生可以使用vnStat來進行網(wǎng)絡流量的研究,學習網(wǎng)絡協(xié)議和流量模式。
- 遠程站點監(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
、veth
、br-
和 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
在這里插入圖片描述
在這里插入圖片描述
六、訪問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)絡使用情況。
在這里插入圖片描述
七、總結(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),歡迎值友理性交流,和諧討論~
,