在雲端運算的時代,虛擬機器 (VM) 已經變得非常普遍,而實體機器的使用率則開始逐漸減少。在這篇文章中,我們將介紹 ‘vnStat’ 和 ‘iftop’ 這兩個工具,我們可以使用它們來監控 VM 中的數據消耗。
首先,我正在建立一台具有以下資源的機器:
20 GHz CPU
16 GB RAM
20 GB SSD
我正在掛載 Ubuntu 18.04 映像檔,該映像檔可於 CloudSigma 的 程式庫中取得。
Ubuntu 18.04:預裝 64 位元,含 VirtIO 驅動程式、超級用戶、Python 2.7.15、Pip 18.0、OpenSSL 1.1.0i、Cloud-init 以及截至 2018-09-30 的最新更新。
接下來,我正在更新機器上所有現有的套件庫和套件。
|
1 2 |
sudo apt update sudo apt upgrade |
現在我們的系統已經是最新版本,我將開始介紹我們的工具:‘vnStat’ 和 ‘iftop’。
VNSTAT
根據 humdi 的說法,vnStat 是一款適用於 Linux 和 BSD 的文字介面網路流量監控工具,它會記錄所選介面的網路流量日誌。它使用核心提供的網路介面統計數據作為資訊來源。這意味著 vnStat 實際上不會竊聽任何流量,同時也確保了極低的系統資源佔用。
vnStat 的一些特點包括:
- 即使系統重新啟動,數據依然存在。
- 它可以同時監控多個介面。
- 提供多種輸出選項,例如按天、按週等。
- 使用者可以設定數據保留策略。
- 可以根據計費週期來設定月份。
- 該工具本身非常輕量,資源佔用極小。
- 無論流量大小,CPU 使用率都保持不變。
安裝
使用以下指令安裝 vnStat:
|
1 |
sudo apt install vnstat |
它應該會自動偵測網路介面。如果沒有自動偵測到,我可以使用以下指令檢查介面:
|
1 |
ip addr |
在我的情況下,我可以看到兩個介面:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 22:af:d1:32:d2:0b brd ff:ff:ff:ff:ff:ff inet XXX.XXX.XX.XXX/24 brd XXX.XXX.XX.XXX scope global dynamic ens3 valid_lft 1853sec preferred_lft 1853sec inet6 fe80::20af:d1ff:fe32:d20b/64 scope link valid_lft forever preferred_lft forever |
我可以忽略 loopback 介面。我想監控的介面是 ‘ens3’。我可以使用以下指令在 vnStat 中更新此設定:
|
1 |
sudo vnstat -u -i ens3 |
使用指南
可以使用以下指令查看使用指南:vnStat –help
使用方式將如下所示說明:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
vnStat 1.18 由 Teemu Toivola <tst at iki dot fi> -q, --查詢 查詢 資料庫 -h, --小時 顯示 小時 -d, --天數 顯示 天數 -m, --月份 顯示 月份 -w, --週數 顯示 週數 -t, --top10 顯示 前 10 天 -s, --short 使用 簡短 輸出 -u, --update 更新 資料庫 -i, --iface 選擇 介面 (預設: ens3) -?, --help 簡短 說明 -v, --version 顯示 版本 -tr, --traffic 計算 流量 -ru, --rateunit 切換 已設定的 速率 單位 -l, --live 顯示 傳輸 速率 以 即時 時間 請參閱 也 "--longhelp" 以取得 完整的 選項 清單 以及 "man vnstat". |
藉由這些指令,我們可以取得數據使用量的指標。
為了輕鬆且直觀地進行監控,我們可以安裝 vnStat 儀表板。以下是安裝儀表板的步驟:
安裝以下所需的相依套件:
|
1 |
sudo apt install apache2 php wget unzip -y |
安裝所需的相依套件後,我們將從 GitHub 儲存庫獲取儀表板,將其解壓縮並放置在我們的網頁伺服器目錄中。
|
1 2 3 |
wget https://github.com/alexandermarston/vnstat-dashboard/archive/master.zip unzip master.zip sudo mv vnstat-dashboard-master/ /var/www/html/vnstat/ |
接下來,我們需要編輯設定。
|
1 |
sudo vi /var/www/html/vnstat/config.php |
以下幾行需要修改。我已將需要修改的部分以粗體標記。
|
1 2 3 4 5 6 7 |
$use_predefined_interfaces = <strong>true</strong>; if ($use_predefined_interfaces == <strong>true</strong>) { $interface_list = <strong>["ens3"]</strong>; $interface_name<strong>['ens3']</strong> = "測試介面"; } |
我可以為介面命名,以便更容易進行監控。使用者可以有多個要監控的介面。我們可以在這裡新增這些介面。
做出變更後,請開啟 <<IP-ADDRESS>>/vnstat
我現在能夠以優雅的方式查看數據了。


IFTOP
iftop 會監聽指定介面上的網路流量,如果未指定,則會監聽它所找到的第一個看起來像外部介面的介面。它會顯示一個表格,呈現目前成對主機的頻寬使用情況。我們必須以足夠的權限執行 iftop,才能監控該介面上的所有網路流量。
安裝
我們可以使用以下指令安裝 Iftop:
|
1 |
sudo apt install iftop |
使用指南
可以使用以下指令查看使用指南:iftop -h
使用方法將如下所示:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
iftop: 顯示 頻寬 使用情況 在 一個 介面 按 主機 概要: iftop -h | [-npblNBP] [-i 介面] [-f 篩選 代碼] [-F 網路/遮罩] [-G 網路6/遮罩6] -h 顯示 此 訊息 -n 不進行主機名稱解析 -N 不將 連接埠號轉換為服務 services -p 執行 於 混雜 模式 (顯示 流量 在...之間 其他 主機 在 該 相同 網路 區段) -b 不'要 顯示 一個 條形 圖 的 流量 -B 顯示 頻寬 以 位元組 -i 介面 監聽 於 指定的 介面 -f 過濾器 代碼 使用 過濾器 代碼 來 選擇 封包 進行 計數 (預設: 無, 但 僅 IP 封包 被 計數) -F 網路/遮罩 顯示 流量 流向 進出/out 的 IPv4 網路 -G net6/mask6 顯示 流量 流向 進出/out 的 IPv6 網路 -l 顯示 並 計數 連結-本機 IPv6 流量 (預設: 關閉) -P 顯示 連接埠 以及 well as 主機 -m 限制 設定 the 上限 limit 給 the 頻寬 刻度 -c 設定 檔案 指定 一個 替代的 設定 檔案 -t 使用 文字 介面 不使用 ncurses 排序 順序: -o 2s 排序 依據 第一 欄 (2s 流量 平均值) -o 10s 排序 依據 第二 欄 (10s 流量 平均值) [預設] -o 40s 排序 依據 第三 欄 (40s 流量 平均值) -o 來源 排序 依據 來源 位址 -o 目的地 排序 依據 目的地 位址 以下 選項 僅 可用 於 結合 in combination with -t -s num 在 one single text output afer num 秒後列印單次文字輸出,, 然後 結束 -L num 要 列印 的 行 數 iftop, 版本 1.0pre4 版權所有 (c) 2002 Paul Warren <pdw@ex-parrot.com> 及 貢獻者 |
它需要 root 權限才能運作。我只是使用 sudo,因為我的使用者 cloudsigma 是 sudoer 使用者。我也可以使用指令 ‘sudo su’,然後以 root 使用者身分執行所有指令。
以下指令將為我顯示介面 ‘ens3’ 上的所有連線以及數據交易:
|
1 2 |
sudo su iftop |
如果需求是擷取特定時間段內的數據流量,有一種更簡單的方法:
|
1 |
iftop -t -s 30 |
上述指令將摘要接下來 30 秒內的數據流量交易,並在時間結束後,提供一個列出所有數據使用量和傳輸速率的表格。
雖然 iftop 提供了即時傳輸速率,但它不會儲存數據,也沒有儀表板供我們直觀地視覺化並查看模式。因此,如果我們想查看即時數據傳輸速率,我們推薦 iftop。對於較長時間段的數據流量監控,我們推薦 vnStat.
我們希望您能善用本指南,並運用如何使用 vnStat 和 iftop 的基本知識來監控 VM 內的數據消耗。
留言
目前尚無留言。成為第一個留言的人吧。