本文介紹了一些能夠用來監控網絡使用狀況的Linux命令行工具。這些工具能夠監控經過網絡接口傳輸的數據,並測量目前哪些數據所傳輸的速度。入站流量和出站流量分開來顯示。python
一些命令能夠顯示單個進程所使用的帶寬。這樣一來,用戶很容易發現過分使用網絡帶寬的某個進程。ios
這些工具使用不一樣的機制來製做流量報告。nload等一些工具能夠讀取"proc/net/dev"文件,以得到流量統計信息;而一些工具使用pcap庫來捕獲全部數據包,而後計算總數據量,從而估計流量負載。ubuntu
下面是按功能劃分的命令名稱。centos
- 監控整體帶寬使用――nload、bmon、slurm、bwm-ng、cbm、speedometer和netload
- 監控整體帶寬使用(批量式輸出)――vnstat、ifstat、dstat和collectl
- 每一個套接字鏈接的帶寬使用――iftop、iptraf、tcptrack、pktstat、netwatch和trafshow
- 每一個進程的帶寬使用――nethogs
1. nload服務器
nload是一個命令行工具,讓用戶能夠分開來監控入站流量和出站流量。它還能夠繪製圖表以顯示入站流量和出站流量,視圖比例能夠調整。用起來很簡單,不支持許多選項。網絡
因此,若是你只須要快速查看總帶寬使用狀況,無需每一個進程的詳細狀況,那麼nload用起來很方便。dom
- $ nload
安裝nload:Fedora和Ubuntu在默認軟件庫裏面就有nload。CentOS用戶則須要從Epel軟件庫得到nload。tcp
- # fedora或centos
- $ yum install nload -y
- # ubuntu/debian
- $ sudo apt-get install nload
2. iftop工具
iftop可測量經過每個套接字鏈接傳輸的數據;它採用的工做方式有別於nload。iftop使用pcap庫來捕獲進出網絡適配器的數據包,而後彙總數據包大小和數量,搞清楚總的帶寬使用狀況。spa
雖然iftop報告每一個鏈接所使用的帶寬,但它沒法報告參與某個套按字鏈接的進程名稱/編號(ID)。不過因爲基於pcap庫,iftop可以過濾流量,並報告由過濾器指定的所選定主機鏈接的帶寬使用狀況。
- $ sudo iftop -n
n選項能夠防止iftop將IP地址解析成主機名,解析自己就會帶來額外的網絡流量。
安裝iftop:Ubuntu/Debian/Fedora用戶能夠從默認軟件庫得到它。CentOS用戶能夠從Epel得到它。
- # fedora或centos
- yum install iftop -y
- # ubuntu或 debian
- $ sudo apt-get install iftop
3. iptraf
iptraf是一款交互式、色彩鮮豔的IP局域網監控工具。它能夠顯示每一個鏈接以及主機之間傳輸的數據量。下面是屏幕截圖。
- $ sudo iptraf
安裝iptraf:
- # Centos(基本軟件庫)
- $ yum install iptraf
- # fedora或centos(帶epel)
- $ yum install iptraf-ng -y
- # ubuntu或debian
- $ sudo apt-get install iptraf iptraf-ng
4. nethogs
nethogs是一款小巧的"net top"工具,能夠顯示每一個進程所使用的帶寬,並對列表排序,將耗用帶寬最多的進程排在最上面。萬一出現帶寬使用忽然激增的狀況,用戶迅速打開nethogs,就能夠找到致使帶寬使用激增的進程。nethogs能夠報告程序的進程編號(PID)、用戶和路徑。
- $ sudo nethogs
安裝nethogs:Ubuntu、Debian和Fedora用戶能夠從默認軟件庫得到。CentOS用戶則須要Epel。
- # ubuntu或debian(默認軟件庫)
- $ sudo apt-get install nethogs
- # fedora或centos(來自epel)
- $ sudo yum install nethogs -y
5. bmon
bmon(帶寬監控器)是一款相似nload的工具,它能夠顯示系統上全部網絡接口的流量負載。輸出結果還含有圖表和剖面,附有數據包層面的詳細信息。
安裝bmon:Ubuntu、Debian和Fedora用戶能夠從默認軟件庫來安裝。CentOS用戶則須要安裝repoforge,由於Epel裏面沒有bmon。
- # ubuntu或debian
- $ sudo apt-get install bmon
- # fedora或centos(來自repoforge)
- $ sudo yum install bmon
bmon支持許多選項,可以製做HTML格式的報告。欲知更多信息,請參閱參考手冊頁。
6. slurm
slurm是另外一款網絡負載監控器,能夠顯示設備的統計信息,還能顯示ASCII圖形。它支持三種不一樣類型的圖形,使用c鍵、s鍵和l鍵便可激活每種圖形。slurm功能簡單,沒法顯示關於網絡負載的任何更進一步的詳細信息。
- $ slurm -s -i eth0
安裝slurm
- # debian或ubuntu
- $ sudo apt-get install slurm
- # fedora或centos
- $ sudo yum install slurm -y
7. tcptrack
tcptrack相似iftop,使用pcap庫來捕獲數據包,並計算各類統計信息,好比每一個鏈接所使用的帶寬。它還支持標準的pcap過濾器,這些過濾器可用來監控特定的鏈接。
安裝tcptrack:Ubuntu、Debian和Fedora在默認軟件庫裏面就有它。CentOS用戶則須要從RepoForge得到它,由於Epel裏面沒有它。
- # ubuntu, debian
- $ sudo apt-get install tcptrack
- # fedora, centos(來自repoforge軟件庫)
- $ sudo yum install tcptrack
8. vnstat
vnstat與另外大多數工具備點不同。它實際上運行後臺服務/守護進程,始終不停地記錄所傳輸數據的大小。以外,它能夠用來製做顯示網絡使用歷史狀況的報告。
- $ service vnstat status
- * vnStat daemon is running
運行沒有任何選項的vnstat,只會顯示自守護進程運行以來所傳輸的數據總量。
- $ vnstat
- Database updated: Mon Mar 17 15:26:59 2014
- eth0 since 06/12/13
- rx: 135.14 GiB tx: 35.76 GiB total: 170.90 GiB
- monthly
- rx | tx | total | avg. rate
-
- ------------------------+-------------+-------------+-------------
- Feb '14 8.19 GiB | 2.08 GiB | 10.27 GiB | 35.60 kbit/s
- Mar '14 4.98 GiB | 1.52 GiB | 6.50 GiB | 37.93 kbit/s
- ------------------------+-------------+-------------+-------------
- estimated 9.28 GiB | 2.83 GiB | 12.11 GiB |
- daily
- rx | tx | total | avg. rate
- ------------------------+-------------+-------------+-------------
- yesterday 236.11 MiB | 98.61 MiB | 334.72 MiB | 31.74 kbit/s
- today 128.55 MiB | 41.00 MiB | 169.56 MiB | 24.97 kbit/s
- ------------------------+-------------+-------------+-------------
- estimated 199 MiB | 63 MiB | 262 MiB |
想實時監控帶寬使用狀況,請使用"-l"選項(實時模式)。而後,它會顯示入站數據和出站數據所使用的總帶寬量,但很是精確地顯示,沒有關於主機鏈接或進程的任何內部詳細信息。
- $ vnstat -l -i eth0
- Monitoring eth0... (press CTRL-C to stop)
- rx: 12 kbit/s 10 p/s tx: 12 kbit/s 11 p/s
vnstat更像是一款製做歷史報告的工具,顯示天天或過去一個月使用了多少帶寬。它並非嚴格意義上的實時監控網絡的工具。
vnstat支持許多選項,支持哪些選項方面的詳細信息請參閱參考手冊頁。
安裝vnstat
- # ubuntu或debian
- $ sudo apt-get install vnstat
- # fedora或 centos(來自epel)
- $ sudo yum install vnstat
9. bwm-ng
bwm-ng(下一代帶寬監控器)是另外一款很是簡單的實時網絡負載監控工具,能夠報告摘要信息,顯示進出系統上全部可用網絡接口的不一樣數據的傳輸速度。
- $ bwm-ng
- bwm-ng v0.6 (probing every 0.500s), press 'h' for help
- input: /proc/net/dev type: rate
- / iface Rx Tx T
- ot=================================================================
- == eth0: 0.53 KB/s 1.31 KB/s 1.84
- KB lo: 0.00 KB/s 0.00 KB/s 0.00
- KB-------------------------------------------------------------------------------------------------------------
- total: 0.53 KB/s 1.31 KB/s 1.84
- KB/s
若是控制檯足夠大,bwm-ng還能使用curses2輸出模式,爲流量繪製條形圖。
- $ bwm-ng -o curses2
安裝bwm-ng:在CentOS上,能夠從Epel來安裝bwm-ng。
- # ubuntu或debian
- $ sudo apt-get install bwm-ng
- # fedora或centos(來自epel)
- $ sudo apt-get install bwm-ng
10. cbm:Color Bandwidth Meter
這是一款小巧簡單的帶寬監控工具,能夠顯示經過諸網絡接口的流量大小。沒有進一步的選項,僅僅實時顯示和更新流量的統計信息。
- $ sudo apt-get install cbm
11. speedometer
這是另外一款小巧而簡單的工具,僅僅繪製外觀漂亮的圖形,顯示經過某個接口傳輸的入站流量和出站流量。
- $ speedometer -r eth0 -t eth0
安裝speedometer
- # ubuntu或debian用戶
- $ sudo apt-get install speedometer
12. pktstat
pktstat能夠實時顯示全部活動鏈接,並顯示哪些數據經過這些活動鏈接傳輸的速度。它還能夠顯示鏈接類型,好比TCP鏈接或UDP鏈接;若是涉及HTTP鏈接,還會顯示關於HTTP請求的詳細信息。
- $ sudo pktstat -i eth0 -nt
- $ sudo apt-get install pktstat
13. netwatch
netwatch是netdiag工具庫的一部分,它也能夠顯示本地主機與其餘遠程主機之間的鏈接,並顯示哪些數據在每一個鏈接上所傳輸的速度。
- $ sudo netwatch -e eth0 -nt
- $ sudo apt-get install netdiag
14. trafshow
與netwatch和pktstat同樣,trafshow也能夠報告當前活動鏈接、它們使用的協議以及每條鏈接上的數據傳輸速度。它能使用pcap類型過濾器,對鏈接進行過濾。
只監控TCP鏈接
- $ sudo trafshow -i eth0 tcp
- $ sudo apt-get install netdiag
15. netload
netload命令只顯示關於當前流量負載的一份簡短報告,並顯示自程序啓動以來所傳輸的總字節量。沒有更多的功能特性。它是netdiag的一部分。
- $ netload eth0
- $ sudo apt-get install netdiag
16. ifstat
ifstat可以以批處理式模式顯示網絡帶寬。輸出採用的一種格式便於用戶使用其餘程序或實用工具來記入日誌和分析。
- $ ifstat -t -i eth0 0.5
- Time eth0
- HH:MM:SS KB/s in KB/s out
- 09:59:21 2.62 2.80
- 09:59:22 2.10 1.78
- 09:59:22 2.67 1.84
- 09:59:23 2.06 1.98
- 09:59:23 1.73 1.79
安裝ifstat:Ubuntu、Debian和Fedora用戶在默認軟件庫裏面就有它。CentOS用戶則須要從Repoforge得到它,由於Epel裏面沒有它。
- # ubuntu, debian
- $ sudo apt-get install ifstat
- # fedora, centos(Repoforge)
- $ sudo yum install ifstat
17. dstat
dstat是一款用途普遍的工具(用python語言編寫),它能夠監控系統的不一樣統計信息,並使用批處理模式來報告,或者將相關數據記入到CSV或相似的文件。這個例子顯示瞭如何使用dstat來報告網絡帶寬。
安裝dstat
- $ dstat -nt
- -net/total- ----system----
- recv send| time
- 0 0 |23-03 10:27:13
- 1738B 1810B|23-03 10:27:14
- 2937B 2610B|23-03 10:27:15
- 2319B 2232B|23-03 10:27:16
- 2738B 2508B|23-03 10:27:17
18. collectl
collectl以一種相似dstat的格式報告系統的統計信息;與dstat同樣,它也收集關於系統不一樣資源(如處理器、內存和網絡等)的統計信息。這裏給出的一個簡單例子顯示瞭如何使用collectl來報告網絡使用/帶寬。
- $ collectl -sn -oT -i0.5
- waiting for 0.5 second sample...
- # <----------Network---------->
- #Time KBIn PktIn KBOut PktOut
- 10:32:01 40 58 43 66
- 10:32:01 27 58 3 32
- 10:32:02 3 28 9 44
- 10:32:02 5 42 96 96
- 10:32:03 5 48 3 28
安裝collectl
- # Ubuntu/Debian用戶
- $ sudo apt-get install collectl
- #Fedora
- $ sudo yum install collectl
結束語
上述幾個使用方便的命令能夠迅速檢查Linux服務器上的網絡帶寬使用狀況。不過,這些命令須要用戶經過SSH登陸到遠程服務器。另外,基於Web的監控工具也能夠用來實現一樣的任務。
ntop和darkstat是面向Linux系統的其中兩個基本的基於Web的網絡監控工具。除此以外還有企業級監控工具,好比nagios,它們提供了一批功能特性,不只僅能夠監控服務器,還能監控整個基礎設施。