一、如何檢視CentOS的網絡帶寬出口
檢查維護系統的時候,經常會要檢視伺服器的網絡端口是多大的,是以需要用到Linux的一個指令。
如何檢視CentOS的網絡帶寬出口多大?可以用下面的指令來檢視。
# ethtool eth0
前面是指令,後面跟的是裝置名,如果對外連接配接的網絡裝置是eth1,那就需要改成:ethtool eth0
[root@localhost ~]# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: Unknown
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
二、Linux伺服器上監控網絡帶寬的18個常用指令和工具
本文介紹了一些可以用來監控網絡使用情況的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獲得它。
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。
$ 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
$ 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
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
$ 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。
$ 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
15. netload
netload指令隻顯示關于目前流量負載的一份簡短報告,并顯示自程式啟動以來所傳輸的總位元組量。沒有更多的功能特性。它是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裡面沒有它。
$ 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,它們提供了一批功能特性,不僅僅可以監控伺服器,還能監控整個基礎設施。