用開源工具完成網(wǎng)絡(luò)性能監(jiān)控
【51CTO.com獨(dú)家特稿】網(wǎng)絡(luò)管理員的工作是很復(fù)雜的,只要網(wǎng)絡(luò)出現(xiàn)異常,網(wǎng)絡(luò)管理員就會想救火隊(duì)員一樣忙,他們不僅要負(fù)責(zé)安裝、維護(hù)HUB、交換機(jī)、路由器、防火墻、IDS(IPS),而且要確保這些部件全部都能有效協(xié)同工作,當(dāng)然完成這些工作是在一定預(yù)算范圍內(nèi)完成。如今,經(jīng)濟(jì)危機(jī)導(dǎo)致IT開支縮減,這種預(yù)算通常會比較少。過去在網(wǎng)絡(luò)性能工具上公司必須花費(fèi)大量資金購買商業(yè)的監(jiān)控軟件如Cisco works 2000 、Hp Open View。而本文的目標(biāo)就是向大家介紹些用于幫助監(jiān)視網(wǎng)絡(luò)并排除網(wǎng)絡(luò)故障的基于Unix/Linux的免費(fèi)開源工具,助你一臂之力。
一、定義網(wǎng)絡(luò)性能
大多數(shù)網(wǎng)絡(luò)性能工具都是通過四個(gè)指標(biāo)來度量網(wǎng)絡(luò)性能:可用性、響應(yīng)時(shí)間、網(wǎng)絡(luò)利用率、網(wǎng)絡(luò)吞吐量
1.可用性:如果網(wǎng)絡(luò)不通了,那么你遇到的問題就不僅僅是網(wǎng)絡(luò)性能問題,測試網(wǎng)絡(luò)可用性最簡單的方法是用ping命令,盡管大多數(shù)網(wǎng)管員都知道什么是ping程序,不過很少有人知道使用ping去執(zhí)行高級測試命令選項(xiàng)
例如下面的代碼可以自動(dòng)搜索到當(dāng)前網(wǎng)段所有在線的主機(jī)的NetBios名,并記錄到指定文本文件中。
#set -x cat /dev/null > record.txt nmblookup \*|grep '<00>'|awk '{print $1}' >record.txt #ping -c 2 -b 192.168.0.255|grep 64|awk '{print $4}'|sed -e 's/://g'>record.txt . /etc/bashrc NO=`cat record.txt|wc -l` cat /dev/null > result cat /dev/null > netbios_name color black_green cat < |
盡管發(fā)送帶個(gè)的ping數(shù)據(jù)包給遠(yuǎn)程主機(jī)可以確定網(wǎng)絡(luò)路徑的可用性,但執(zhí)行單一的ping命令本身不是網(wǎng)絡(luò)性能的***指示器。如何收集更多的信息才能確定客戶端和服務(wù)器之間的連接性?默認(rèn)情況下,Unix的ping會持續(xù)發(fā)送ping給指定的遠(yuǎn)程主機(jī),直到管理員按下Ctrul+C,另外你還可以使用ping命令中的-c選項(xiàng),制定特定數(shù)量的ping 包。再一個(gè)與度量可用性相關(guān)的問題是ping請求中數(shù)據(jù)包的大小。我們都知道Cisco交換機(jī)有三類數(shù)據(jù)包緩沖區(qū):小型數(shù)據(jù)包、中型數(shù)據(jù)包、大型數(shù)據(jù)包。要測試這些網(wǎng)絡(luò)設(shè)備就要發(fā)出不同大小的數(shù)據(jù)包。在UNIX系統(tǒng)中默認(rèn)情況下ping 工具使用的數(shù)據(jù)包大小是64字節(jié),其中56字節(jié)是數(shù)據(jù),其余8字節(jié)是ICMP 頭信息,你可以使用ping 加-c 開關(guān)來改變數(shù)據(jù)包大小,但別想試圖超過1500字節(jié)。
2.響應(yīng)時(shí)間
為了個(gè)更精確描述網(wǎng)絡(luò)性能,必須了解數(shù)據(jù)包在網(wǎng)絡(luò)中的傳輸華樂多長時(shí)間,這就是所謂的響應(yīng)時(shí)間。我們可以輕松的從ping 那里顯示輸出中看到每個(gè)發(fā)出的ping包,回程響應(yīng)時(shí)間。以ms為單位,一般而言內(nèi)部100兆LAN響應(yīng)時(shí)間小于1ms,WAN連接,響應(yīng)時(shí)間小于300ms,不過大家注意所有Windows系統(tǒng)所顯示的時(shí)間最短就是小于1ms,而Unix/Linux/Bsd系統(tǒng)則會精確到0.01ms。 在具有冗余路徑的網(wǎng)絡(luò)中,經(jīng)常希望能確定數(shù)據(jù)包在給定時(shí)刻所經(jīng)過的路徑,如果發(fā)現(xiàn)數(shù)據(jù)包沒有被發(fā)送到***效的路徑上,那么可以對route進(jìn)行些簡單的配置,以縮短響應(yīng)時(shí)間。這是我們可以使用traceroute命令,如下圖。
![]() |
圖1 |
上述圖像顯示了沿著通往目的地主機(jī)的路徑上,響應(yīng)到期測試數(shù)據(jù)包的每個(gè)路由器。并顯示回程響應(yīng)時(shí)間。
3.網(wǎng)絡(luò)利用率
計(jì)算網(wǎng)絡(luò)利用率要求知道在設(shè)定的期間內(nèi)網(wǎng)絡(luò)所處理的網(wǎng)絡(luò)流量的字節(jié)數(shù)是多少,在計(jì)算全雙工連接的接口帶寬時(shí),更準(zhǔn)確的方法是分別測量輸入利用率和輸出利用率如下式所示: 輸入利用率=(ifInOctets×8×100)/((秒數(shù)) *IfSpeed)
輸出利用率=(ifOutOctets×8×100)/((秒數(shù)) *IfSpeed)
對于半雙工來說,在計(jì)算利用率時(shí)使用公式(ifInOctets+?ifOutOctets)/((秒數(shù)) IfSpeed)×8×100
ifInOctets 表示輸入流量的字節(jié)數(shù)。
ifOutOctets 表示輸出量的字節(jié)數(shù)。
IfSpeed 表示接口速率。
4.網(wǎng)絡(luò)吞吐量
確定了網(wǎng)絡(luò)吞吐量,網(wǎng)管員就可以找出影響客戶端與服務(wù)器之間給定網(wǎng)絡(luò)連接性能的網(wǎng)絡(luò)瓶頸。找出網(wǎng)絡(luò)瓶頸通常不會是件容易的事在復(fù)雜網(wǎng)絡(luò)中,客戶與服務(wù)器之間的路徑上可能會有多個(gè)網(wǎng)絡(luò)設(shè)備,取定網(wǎng)絡(luò)吞吐量最困難的部分就是計(jì)算機(jī)每個(gè)中間連接對整個(gè)端對端網(wǎng)絡(luò)連接的影響。
![]() |
圖2 |
#p#
二、觀察網(wǎng)絡(luò)流量
觀察在網(wǎng)絡(luò)上穿行的陸良可以獲得有關(guān)網(wǎng)絡(luò)健康 的大量信息。下面我在介紹一些unix主機(jī)上,捕獲流量的工具。Unix下***的數(shù)據(jù)包捕獲庫是libpcap, libpcap的英文意思是 Packet Capture library,***版本是libpcap-0.9.8。下載并安裝libpcap庫之后,你就可以用他來編譯要求采用混合模式訪問網(wǎng)絡(luò)的程序了。下面介紹兩個(gè)常用軟件。
1.Tcpdump程序
大多數(shù) Unix分支都包括tcpdump,通常需要root權(quán)限才能運(yùn)行。他的詳細(xì)使用方法可以在網(wǎng)上查到。
![]() |
圖3 |
2.Ethereal程序
Ethereal程序是一個(gè)圖形化的網(wǎng)絡(luò)監(jiān)視程序,在unix和windows環(huán)境下都給可以運(yùn)行,該程序?qū)嵱胠ibpcap庫或winpcap庫從主機(jī)網(wǎng)絡(luò)接口中捕獲數(shù)據(jù)包,他實(shí)用GTK+圖形庫生成自己的窗口和對話框,實(shí)用Glib庫為GTK提供附加的圖形庫,ucd-snmp庫提供SNMP解碼功能
![]() |
圖4 |
![]() |
圖5 |
【51CTO.COM 獨(dú)家特稿,轉(zhuǎn)載請注明出處及作者!】
【編輯推薦】