本文介紹了一些可以用來監控網絡使用情況的Linux命令行工具。這些工具可以監控通過網絡接口傳輸的數據,并測量目前哪些數據所傳輸的速度。入站流量和出站流量分開來顯示。
- 作者:布加迪編譯來源:51CTO.com|2014-04-11 10:10
- 移動端收藏
?
【51CTO精選譯文】本文介紹了一些可以用來監控網絡使用情況的Linux命令行工具。這些工具可以監控通過網絡接口傳輸的數據,并測量目前哪些數據所傳輸的速度。入站流量和出站流量分開來顯示。
一些命令可以顯示單個進程所使用的帶寬。這樣一來,用戶很容易發現過度使用網絡帶寬的某個進程。
這些工具使用不同的機制來制作流量報告。nload等一些工具可以讀取"proc/net/dev"文件,以獲得流量統計信息;而一些工具使用pcap庫來捕獲所有數據包,然后計算總數據量,從而估計流量負載。
下面是按功能劃分的命令名稱。
- 監控總體帶寬使用――nload、bmon、slurm、bwm-ng、cbm、speedometer和netload
- 監控總體帶寬使用(批量式輸出)――vnstat、ifstat、dstat和collectl
- 每個套接字連接的帶寬使用――iftop、iptraf、tcptrack、pktstat、netwatch和trafshow
- 每個進程的帶寬使用――nethogs
1. nload
nload是一個命令行工具,讓用戶可以分開來監控入站流量和出站流量。它還可以繪制圖表以顯示入站流量和出站流量,視圖比例可以調整。用起來很簡單,不支持許多選項。
所以,如果你只需要快速查看總帶寬使用情況,無需每個進程的詳細情況,那么nload用起來很方便。
- $?nload?
安裝nload:Fedora和Ubuntu在默認軟件庫里面就有nload。CentOS用戶則需要從Epel軟件庫獲得nload。
- #?fedora或centos?
- $?yum?install?nload?-y?
- #?ubuntu/debian?
- $?sudo?apt-get?install?nload?
2. iftop
iftop可測量通過每一個套接字連接傳輸的數據;它采用的工作方式有別于nload。iftop使用pcap庫來捕獲進出網絡適配器的數據包,然后匯總數據包大小和數量,搞清楚總的帶寬使用情況。
雖然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,它們提供了一批功能特性,不僅僅可以監控服務器,還能監控整個基礎設施。
原文鏈接:http://www.binarytides.com/linux-commands-monitor-network/
http://os.51cto.com/art/201404/435279.htm