Linux常用網絡帶寬監控工具(轉)


本文介紹了一些可以用來監控網絡使用情況的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 
sudo 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 
sudo yum install iftop -y 
# ubuntu或 debian 
sudo apt-get install iftop 

3. iptraf

iptraf是一款交互式、色彩鮮艷的IP局域網監控工具。它可以顯示每個連接以及主機之間傳輸的數據量。下面是屏幕截圖。

sudo iptraf 

安裝iptraf:

# Centos(基本軟件庫) 
sudo yum install iptraf 
# fedora或centos(帶epel) 
sudo 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

這是一款小巧簡單的帶寬監控工具,可以顯示通過諸網絡接口的流量大小。沒有進一步的選項,僅僅實時顯示和更新流量的統計信息。

# ubuntu或debian 
sudo apt-get install cbm
# fedora或centos(來自epel)
sudo yum install cbm

11. speedometer

這是另一款小巧而簡單的工具,僅僅繪制外觀漂亮的圖形,顯示通過某個接口傳輸的入站流量和出站流量。

speedometer -r eth0 -t eth0 

安裝speedometer

# ubuntu或debian用戶 
sudo apt-get install speedometer 
# fedora或centos(來自epel)
sudo yum install speedometer

12. pktstat

pktstat可以實時顯示所有活動連接,並顯示哪些數據通過這些活動連接傳輸的速度。它還可以顯示連接類型,比如TCP連接或UDP連接;如果涉及HTTP連接,還會顯示關於HTTP請求的詳細信息。

# ubuntu或debian用戶
sudo apt-get install pktstat
# fedora或centos(來自epel)
sudo yum install pktstat
sudo pktstat -i eth0 -nt

13. netwatch

netwatch是netdiag工具庫的一部分,它也可以顯示本地主機與其他遠程主機之間的連接,並顯示哪些數據在每個連接上所傳輸的速度。

# ubuntu或debian用戶 
sudo apt-get install netdiag 
# fedora或centos(來自epel)
sudo yum install netdiag 
sudo netwatch -e eth0 -nt 

14. trafshow

與netwatch和pktstat一樣,trafshow也可以報告當前活動連接、它們使用的協議以及每條連接上的數據傳輸速度。它能使用pcap類型過濾器,對連接進行過濾。

只監控TCP連接

sudo trafshow -i eth0 tcp 
# ubuntu或debian用戶 
sudo apt-get install netdiag 
# fedora或centos(來自epel)
sudo yum install netdiag  

15. netload

netload命令只顯示關於當前流量負載的一份簡短報告,並顯示自程序啟動以來所傳輸的總字節量。沒有更多的功能特性。它是netdiag的一部分。

# ubuntu或debian用戶 
sudo apt-get install netdiag 
# fedora或centos(來自epel)
sudo yum install netdiag 
netload eth0 

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://os.51cto.com/art/201404/435279.htm(以上內容轉自此篇文章)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM