基于MRTG的網(wǎng)絡(luò )流量監測研究與應用
1 SNMP協(xié)議
簡(jiǎn)單網(wǎng)絡(luò )管理協(xié)議(Simple Network ManagementProtocol,SNMP)是基于TCP/IP的互聯(lián)網(wǎng)管理協(xié)議,它是由SGMP協(xié)議發(fā)展而來(lái)的。SNMP定義了傳送管理信息的協(xié)議消息格式及管理站和設備代理之間進(jìn)行消息傳送的規程,能對互聯(lián)網(wǎng)中不同類(lèi)型的設備進(jìn)行監控和管理。Internet上的SNMP運行在TCP/IP協(xié)議族之上,但是其傳輸層協(xié)議采用的是無(wú)連接的UDP而不是TCP。
基于SNMP的網(wǎng)絡(luò )管理模型包括四個(gè)關(guān)鍵元素:網(wǎng)絡(luò )管理站(NMS)、管理代理(Agent)、管理信息庫(MIB)和網(wǎng)絡(luò )管理協(xié)議。SNMP采用了C/S模型的特殊形式——代理/管理站模型,對于網(wǎng)絡(luò )設備的管理是通過(guò)管理工作站與SNMP代理間的交互工作完成的。其工作原理如圖1所示。
Agent是常駐在被管對象上的軟件,它接收來(lái)自NMS的指令和發(fā)送響應信息,操作MIB并對網(wǎng)絡(luò )設備進(jìn)行監控和配置。NMS和Agent通過(guò)發(fā)送SNMP消息進(jìn)行通信。SNMP協(xié)議提供了Get,Set和Trap三類(lèi)操作。SNMP協(xié)議利用UDP協(xié)議的161/162端口進(jìn)行通信。在SNMP中,采用了符合ASN.1(AbstractSyntax Notation)規范的對象標識方法OID(ObjectIdentifier),以此來(lái)惟一地標識網(wǎng)絡(luò )所需管理的對象或對象組。如IP協(xié)議的OID為{1,3,6,1,2,1,4}。
SNMP從產(chǎn)生到現在一共發(fā)展有3個(gè)主版本,分別為SNMPv1,SNMPv2和SNMPv3。其中SNMPv2又分為若干個(gè)子版本,其中SNMPv2c應用最為廣泛,它在計數時(shí)使用了64位字長(cháng),而SNMPv1使用的是32位。
2 MRTG的工作原理及組成
MRTG(多路由器流量圖示器)是一個(gè)基于SNMP協(xié)議的監控網(wǎng)絡(luò )流量和主機資源的開(kāi)放源代碼的管理工具。它通過(guò)SNMP請求得到被監控對象的流量信息,將這些流量信息以PNG格式的圖形表示,并將包含這些圖形的HTML文檔通過(guò)Web方式顯示給用戶(hù),非常直觀(guān)地顯示流量負載。
MRTG是用Per1和C編寫(xiě)的,可以工作在Unix和Windows NT環(huán)境下。MRTG的Perl腳本用以使用SNMP來(lái)讀取路由器的流量信息,性能高的C程序則用來(lái)記錄負載數據,創(chuàng )建代表被監控網(wǎng)絡(luò )連接的圖形,這些圖嵌入在Web頁(yè)面中。除了獲得每天的詳細信息之外,MRTG還可以創(chuàng )建前7天、前4個(gè)星期甚至前12個(gè)月內網(wǎng)絡(luò )流量的直觀(guān)表示。
MRTG主要由4個(gè)模塊組成:
基礎模塊 包括定義SMI要求的數據結構,并提供相應的方法通過(guò)SNMP操作獲取被管對象信息的SNMP模塊和MRTG支持模塊。
日志文件 MRTG使用的日志文件以ASCII文本形式來(lái)記錄測得的流量數據,日志文件由Rate Up模塊進(jìn)行更新。
日志更新和繪圖工具 在該模塊中,MRTG使用C語(yǔ)言程序來(lái)完成日志文件的更新和統計圖形的生成,與原來(lái)用Perl實(shí)現相比,大大提高了效率。
配置和網(wǎng)頁(yè)組織工具 MRTG提供了相關(guān)的配置文件生成工具cfgmaker和網(wǎng)頁(yè)組織工具indexmaker。通過(guò)運行cfgmaker,利用SNMP協(xié)議讀取被管設備中的對象信息,自動(dòng)生成該設備的框架配置文件。Index-maker通過(guò)讀取配置文件中的Target描述獲得對象信息,并用這些信息組織成該對象的HTML頁(yè)。
3基于MRTG的流量監測的實(shí)現與分析
3.1 MRTG的安裝
MRTG是用Perl編寫(xiě)的,它的運行需要Perl的支持,所以在安裝MRTG之前必須下載并安裝Perl語(yǔ)言。由于MRTG的流量監測是基于Web頁(yè)面的,必須安裝Web服務(wù)器軟件,在這里選擇了運用非常廣泛的Apache。在安裝MRTG時(shí),選擇了目前比較穩定的版本MRTG-2.12.2。
3.2 MRTG的配置
MRTG的配置是實(shí)現對網(wǎng)絡(luò )流量監測的關(guān)鍵,而MRTG的配置信息都保存在mrtg.cfg文件中,對MRTG的配置實(shí)際上就是生成和配置mrtg.cfg文件。
在配置系統之前,需要收集以下信息:被監控設備的IP地址或主機名;如果還想監測除字節流量以外的其他信息,需要知道設備的SNMP OID;最后還要知道所監控設備的SNMP共同體認證名(community string)信息,缺省值是public。
MRTG的配置信息都是保存在mrtg.cfg文件中的,創(chuàng )建該文件并且在其中定義希望的監控特性。一般不需要直接手工編輯該配置文件,因為MRTG軟件包提供有cfgmaker配置工具,根據運行參數可以自動(dòng)生成mrtg.cfg配置文件。
首先在www服務(wù)器的Document Root目錄下創(chuàng )建一個(gè)子目錄用來(lái)存放MRTG生成的統計文件,這里假設apache是默認安裝,因此Document Root在/var/www/html目錄下創(chuàng )建子目錄mrtg。下面就生成MRTG配置文件:
這里的一global參數表示后面的選項是對后面指定的設備都是有效的(如果希望對多個(gè)設備進(jìn)行監控時(shí),該參數就會(huì )發(fā)生作用)。WorkDir用來(lái)指示MRTG的工作目錄;Options用來(lái)指定一些特定的選項,這里的grow-right,bits是用來(lái)指定默認options配置的,對于常見(jiàn)的應用來(lái)說(shuō)默認options配置就可以滿(mǎn)足需求了。
3.3設備端口流量監控
可以手工生成配置文件,但對于一般情況,可以使用MRTG自帶的腳本來(lái)生成配置文件,如:
前面提到,SNMPv1是使用32位字長(cháng)進(jìn)行計數,因此如果采集間隔是5 min,所能正確表示的最大流量應該是:
因此,如果鏈路流量在接近或超過(guò)此數值時(shí),計算出來(lái)的結果不再準確,這時(shí)候便只能使用SNMPv2計數器,在配置MRTG腳本,可以使用public@x.x.x.x.:::::2來(lái)指定讀取SNMPv2的MIB值。
3.4 PING時(shí)延監控
在進(jìn)行PING時(shí)延監控時(shí),我們使用了另一個(gè)Perl腳本mrtg-ping,同時(shí)也可以監控丟包率,配置文件如下:
從以上例子可以看出,MRTG的監控對象就是Target語(yǔ)句后的內容,這里可以是SNMP的MIB對象,也可是執行腳本得到的數值。由此可以看到,MRTG監控的可擴充性非常好,可以自己編寫(xiě)腳本來(lái)獲得感興趣的數據,如服務(wù)器CPU利用率、內存利用率、磁盤(pán)空間、DNS服務(wù)器查詢(xún)次數、Cache服務(wù)器Hit次數、甚至CPU溫度等,MRTG都可將它們用直觀(guān)圖表呈現出來(lái)。
4結語(yǔ)
綜上所述,MRTG在網(wǎng)絡(luò )管理中的應用是非常有效的。我們只要靈活運用SNMP查詢(xún)工具、系統狀態(tài)檢測工具,配合Per1編寫(xiě)傳回字符串處理程序,即可完成MRTG的外掛程序,最后再搭配合適的MRTG配置命令即可產(chǎn)生另類(lèi)實(shí)時(shí)流量統計圖表。因此,對MRTG的應用和持續開(kāi)發(fā),不但可以幫助網(wǎng)絡(luò )管理員隨時(shí)掌握網(wǎng)絡(luò )系統和設備運行狀態(tài),還可以降低企業(yè)或組織的網(wǎng)絡(luò )設備維護成本。
評論