前文〝網路流量監控工具(一):MATE Netspeed〞介紹的「MATE Netspeed」,只能監控『即時(瞬時)網路流量』,而且沒有流量累計的功能。因此,再找尋其它具有累計流量的套件,就有其必要性。本篇就是介紹另一流量監控的套件 vnStat,具有:
- 統計「累計網路流量」的功能,
- 包含「每小時」、「每日」、「每週」、「每月」及「最高 10 次」等流量累計資料。
- 不受「開、關機」、「網卡重啟」等影響,正確累計各時間區間的流量。
- 不需用 root 權限,只要一般使用者就可以查詢結果。
一、安裝
Fedora 的套件資料庫有收錄,所以安裝很方便。[root@Core-i7 ~]# dnf install vnstat若安裝後立即查詢,將出現以下訊息,
[SiB@Core-i7 ~]$ vnstat這是因為 vnStat 藉由一個背景服務程式定時記錄網路流量,剛安裝好的 vnStat 並不會自動啟動這個服務。先查詢一下這個服務的狀態,
No database found, nothing to do. Use --help for help.
A new database can be created with the following command:
vnstat -u -i eth0
Replace 'eth0' with the interface that should be monitored.
The following interfaces are currently available:
enp5s0 lo wlp3s0
[root@Core-i7 ~]# systemctl status vnstat.service由上面的結果(紅色字是標註以方便說明)可以看出來,第一個 disabled 是指『目前系統設定』為『開機不啟動』,第二個 disabled 是指該套件『預設』為『開機不啟動』,而 inactive 則是指目前該服務的狀態為『未啟動』。
● vnstat.service - VnStat - Lightweight Network Traffic Monitor
Loaded: loaded (/usr/lib/systemd/system/vnstat.service; disabled; vendor preset: disabled)
Active: inactive (dead)
二、啟動 vnStat,開始記錄
安裝好 vnStat 後,vnStat 監控服務的預設是:開機時為關閉狀態。因此,要設定為開機時自動啟動監控,才方便隨時監控網路的累積流量。需要的命令如下:[root@Core-i7 ~]# systemctl enable vnstat.service其中,
Created symlink from /etc/systemd/system/multi-user.target.wants/vnstat.service to /usr/lib/systemd/system/vnstat.service.
[root@Core-i7 ~]# systemctl start vnstat.service
[root@Core-i7 ~]# systemctl status vnstat.service
● vnstat.service - VnStat - Lightweight Network Traffic Monitor
Loaded: loaded (/usr/lib/systemd/system/vnstat.service; enabled; vendor preset: disabled)
Active: active (running) since 五 2015-09-25 21:39:40 CST; 2s ago
Main PID: 6046 (vnstatd)
CGroup: /system.slice/vnstat.service └─\u2514\u25006046 /usr/sbin/vnstatd -d
9月 25 21:39:40 Core-i7 systemd[1]: Started VnStat - Lightweight Network Traffic Monitor.
9月 25 21:39:40 Core-i7 systemd[1]: Starting VnStat - Lightweight Network Traffic Monitor...
9月 25 21:39:40 Core-i7 vnstatd[6046]: Monitoring: enp5s0 wlp3s0
- 第 1 個命令是設定的下次開機時,自動啟動 vnStat 監控服務,
- 第 2 個命令是立即啟動 vnStat 監控服務,
- 第 3 個命令是查詢 vnStat 監控服務的設定、執行狀態
註:剛開始監控時,因為記錄的流量資料不足,會查不到資料,過些時間再來查詢即可,不要著急。
三、設定監控的網卡
用 vnStat 監控網路累計流量,可以指定要記錄哪一張網卡,或全部。文件說:可以隨時增加、刪除監控的網卡。不過,我測的時候只能刪除,而不能增加網卡。(有空再試試)(註:「追加監控的網卡」問題已解決,請參考篇末說明)接著,就針對設定的幾個操作分別說明:
1. 除了『本地迴路(lo)』網卡外,全部監控
用 vnstat --iflist 就可以查詢電腦中的所有網卡,[SiB@Core-i7 ~]$ vnstat --iflist將列出目前電腦中所有可辨識的網卡,其中的 lo 是『TCP/IP 堆疊』的『本地迴路』,通常用於:測試『TCP/IP 堆疊』的運作是否正常、網路應用的連線測試等,所以一般不監控它。若使用者想監控所有網卡,不用設定,直接跳到下一個步驟。
Available interfaces: enp5s0 lo wlp3s0
但是,若之前已設定為只監控部分網卡,先把所有網卡監控都移除,再重新啟動 vnStat 監控服務程式(參考步驟 二、3),就恢復監控全部網卡了。(註:「追加監控的網卡」問題已解決,請參考篇末說明)
2. 移除監控特定網卡的流量
現在的「筆記型電腦」除了「有線網路」外,也都有「無線網路」。通常只需要監控對外的網卡就好,例如:平常都用「有線網路」對外連線,這時就不需要監控對內的「無線網路」,關閉這張網卡的監控之命令為,[root@Core-i7 ~]# vnstat --delete --force -i wlp3s0上例是將「無線網路」關閉,也移除之前的紀錄的資料。
Database for interface "wlp3s0" deleted.
The interface will no longer be monitored.
註:若不能確定哪一張是「有線」、「無線」,可以查看右上角工作列中,網路圖示的「連線資訊」。
3. 恢復監控所有網卡的流量
依文件說明或 vnStat 程式的輔助文件(即:vnstat --help 或 vnstat --longhelp 輸出的說明)所述,是可以再追加監控的網卡。不過,我是沒有試成功,只找到這個替代方案,就是將關閉所監控的全部網卡,再重啟 vnStat 的監控服務,[root@Core-i7 ~]# vnstat --iflist其中,
Available interfaces: enp5s0 lo wlp3s0
[root@Core-i7 ~]# vnstat --delete --force -i enp5s0
Database for interface "enp5s0" deleted.
The interface will no longer be monitored.
[root@Core-i7 ~]# vnstat --delete --force -i wlp3s0
Database for interface "wlp3s0" deleted.
The interface will no longer be monitored.
[root@Core-i7 ~]# systemctl restart vnstat.service
- 第 1 個命令是列出可監控的網路(註:lo 不用關閉),
- 第 2, 3 個命令是關閉網卡的監控,而
- 第 4 個命令是重啟 vnStat 的監控服務。
四、查詢網卡流量
開始記錄流量後,一開始會因記錄不足是查不到資料,待會再試就可以了。接著,就是一般的查詢功能,在「終端機」下 vnstat 就可以查詢流量紀錄,上例中,橫向分別為:網卡/日期、接收、傳送、合計及預估值,直向在網卡下分別為:月、日(上例中為:9 月、10 月、昨天及今天)。
[SiB@Core-i7 ~]$ vnstat rx / tx / total / estimated wlp3s0: Sep '15 1 KiB / 0 KiB / 1 KiB Oct '15 122 KiB / 24 KiB / 146 KiB / 0 KiB yesterday 1 KiB / 0 KiB / 1 KiB today 122 KiB / 24 KiB / 146 KiB / -- enp5s0: Sep '15 7.14 MiB / 1.78 MiB / 8.92 MiB Oct '15 207.91 MiB / 1.32 GiB / 1.52 GiB / 53.12 GiB yesterday 7.14 MiB / 1.78 MiB / 8.92 MiB today 207.91 MiB / 1.32 GiB / 1.52 GiB / 1.71 GiB
在 vnstat 命令後可以加上參數,以查詢不同的流量紀錄資訊。幾個常用的參數列表說明如下:
參數 | 作用說明 |
---|---|
--iflist | 列出所有 vnStat 可監控的網卡之編號。 |
-i 網卡編號 | 選擇「網路卡」編號,配合以下參數做為指定特定網卡之用,預設值為 eth0。 |
-h | 顯示最近 24 小時的每小時流量記錄。(配合 -i 參數) |
-d | 顯示最近幾天的每日流量記錄。(配合 -i 參數) |
-m | 顯示最近幾個月的每月流量記錄。(配合 -i 參數) |
-w | 顯示最近幾週的每週流量記錄。(配合 -i 參數) |
-t | 顯示最近幾天的前 10 大流量記錄。(配合 -i 參數) |
-s | 顯示精簡版的流量記錄。(配合 -i 參數) |
--sync | 同步「網卡流量計數」與「流量紀錄資料庫」,當電腦有「休眠」再「甦醒」,而兩個流量紀錄不同需修正時使用。 |
註一:只有一張網卡時,上表中需「配合 -i 參數」的參數,可以不指定網卡。
註二:當有數張網卡,而經常要查詢特定網卡,又想省略不用『 -i 』參數時,可在 /etc/vnstat.conf 這個設定檔中,將 Interface "eth0" 改為 Interface "網卡編號",如下:
# vnStat 1.11 config file上例是假設常查詢的網卡編號為 enp5s0。
##
# default interface
Interface "enp5s0"
後記:
- 2015-10-11: 「不能追加監控的網卡」問題已經解決,請參考〝解決「vnStat 不能監控『追加的』網卡」的問題〞。
已測試版本:
- Fedora: 22, 21
參考資料:
- Teemu Toivola, "vnStat," [Sep. 27, 2015].
- Tsung's Blog, "Linux 監控網路流量的 vnstat 架設," Nov. 18, 2014 [Sep. 27, 2015].
- Silver Moon, "18 commands to monitor network bandwidth on Linux server," May 14, 2014 [Sep. 27, 2015].
- Vladimir A. Pshenkin, "Bandwidth Monitoring Tools For Linux," [Sep. 27, 2015].
- Ravi Saive, "20 Command Line Tools to Monitor Linux Performance," Jan 3, 2015 [Sep. 27, 2015].
沒有留言:
張貼留言
感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)