簡介 mrtg(multi router traffic grapher,mrtg)是個監(jiān)視網(wǎng)絡鏈路流量負載的工具軟件,他通過snmp協(xié)議從設備得到設備的流量信息,并將流量負載以包含png格式的圖像的html文件方式顯示給用戶,以非常直觀的形式顯示流量負載(能在網(wǎng)站http://www.stat.ee./mrtg/得到mrtg的輸出結果示例)。
關于mrtg的最周詳?shù)男畔⒛軓膆ttp://people.ee./~oetiker/webtools/mrtg得到。 mrtg具有以下特色: 可移植性:目前能運行在大多數(shù)unix系統(tǒng)和windows nt之上。 mrtg兼容性 mrtg軟件能運行在以下的操作系統(tǒng)上: linux 1.2.x, 2.0.x, 2.2.x, 2.4.x (intel and alpha and sparc and powerpc) 能通過mrtg監(jiān)視的設備(目前市場上絕大多數(shù)產(chǎn)品都支持snmp協(xié)議,只要支持snmp協(xié)議的設備就都能使用mrtg來監(jiān)視): 3com netbuilders, lanplex 6012 and 2500 snmp簡介 一個網(wǎng)絡管理系統(tǒng)一般要包含以下幾個元素:①若干個(可能非常多個)需要被管理的網(wǎng)絡設備節(jié)點,如路由器、服務器等設備,每個節(jié)點上都運行著一個稱為設備代理(agent)的應用進程,其實現(xiàn)對被管理設備的各種被管理對象的信息如流量等的搜集和對這些被管對象的訪問的支持;②至少一個管理工作站,該管理站運行著管理平臺應用系統(tǒng),實現(xiàn)為管理員提供對被管設備的可視化的圖像界面,從而使管理員能方便的進行管理;③一個管理協(xié)議,用來定義設備代理和管理工作站之間管理信息傳送的規(guī)程。其中管理協(xié)議的操作是在管理框架下進行的,管理框架定義了和安全相關的認證,授權,訪問控制和加密策略等各種安全防護框架。 在運行tcp/ip協(xié)議的互連網(wǎng)環(huán)境中,管理協(xié)議標準是簡單網(wǎng)絡管理協(xié)議(simple network management protocol,snmp),其定義了傳送管理信息的協(xié)議消息格式及管理站和設備代理相互之間進行消息傳送的規(guī)程。 出于業(yè)界對網(wǎng)絡管理協(xié)議標準化的迫切需求的驅動,ietf于1990發(fā)布了snmpv1的正式rfc文件;其設計思想重點放在確保協(xié)議的簡單性、靈活性和可擴展性上,并希望把snmp作為一個過渡性的網(wǎng)管協(xié)議來作為實現(xiàn)對互連的網(wǎng)絡設備進行管理時遵循的標準,待osi的網(wǎng)絡管理協(xié)議?cmip的研發(fā)、實現(xiàn)和標準化成熟和完善到能在業(yè)界推廣之后,再用cmip來替換snmp。不過由于各種的原因,cmip并沒有替代snmp,而snmp發(fā)展為業(yè)界的標準。 snmp一共發(fā)展有3個主版本,分別為snmpv1 ,snmpv2和snmpv3。其中snmpv2又分為若干個子版本,其中snmpv2c應用最為廣泛: snmpv1: 是第一個正式協(xié)議版本,在rfc1155-rfc1158中定義,該版本采用了基于一起體名的安全機制; 運行snmp管理系統(tǒng)的原理及snmp協(xié)議 使用snmp協(xié)議的網(wǎng)絡管理系統(tǒng)管理結構工作一般包括:管理進程通過定時向各個設備的設備代理進程發(fā)送查詢請求消息(以輪詢方式),來跟蹤各個設備的狀態(tài);而當設備出現(xiàn)異常事件如設備冷啟動等時,設備代理進程主動向管理進程發(fā)送陷阱消息,匯報出現(xiàn)的異常事件。這些輪詢消息和陷阱消息的發(fā)送和接受規(guī)程及其格式定義都是由snmp協(xié)議定義的;而被管理設備將其各種管理對象的信息都存放在一個稱為管理信息庫(management information base)庫結構中。 其中snmp協(xié)議是運行在udp協(xié)議之上,他利用的是udp協(xié)議的161/162端口。其中161端口被設備代理監(jiān)聽,等待接受管理者進程發(fā)送的管理信息查詢請求消息;162端口由管理者進程監(jiān)聽等待設備代理進程發(fā)送的異常事件報告陷阱消息,如trap。 設備的所有的需要被管理的信息被看作一個各種被管理對象的集合,這些被管理對象由osi定義在一個被稱作管理信息庫(management information base,mib)的虛擬的信息庫中。 管理對象庫mib mib是個按照層次結構組織的樹狀結構(定義方式類似于域名系統(tǒng)),管理對象為定義為樹中的相應葉子節(jié)點。管理對象是按照模塊的形式組織,每個對象的父節(jié)點表示該種對象屬于上層的哪一個模塊。而且osi為樹中每一層的每個節(jié)點定義唯一的一個數(shù)字標識,每層中的該數(shù)字標識從1開始遞增,這樣樹中的每個節(jié)點都能用從根開始到目的節(jié)點的相應的標識對應的一連串的數(shù)字來表示,如1.3.6.1.2.1.1表示了mibii中系統(tǒng)組子樹,而1.3.6.1.2.1.1.1.0表示系統(tǒng)組中的系統(tǒng)描述(sytem descrption)對象。每個對象的一連串數(shù)字表示被稱為對象標識符(object indentifier,oid)。 相關的一組對象的集合被定義為一個mib模塊。這些模塊使用osi的抽象語法標記(abstract syntax notation one,asn.1)的一個子集寫成。該子集被定義為管理信息結構(management information,smi)。 snmp的消息在發(fā)送和傳輸時消息是采用基本編碼規(guī)則(ber)對消息進行編碼。 snmp基本的標準mib庫是mibii,具體請參考rfc 1213。 snmp協(xié)議操作 snmp提供有三類操作,分別為get,set和trap。 get操作實現(xiàn)對被管理對象所表示的管理信息的讀操作。在snmpv1中,get操作具體一共有兩種形式 get和getnext操作: get操作指示直接讀取操作參數(shù)指定的oid所表示的被管理對象的管理信息值。getnext操作指示讀取操作參數(shù)指定的oid所表示的被管理對象在mib樹中按照字典順序的下一個被管理對象的管理信息的值。在snmpv2中,增加了一種getbulk操作,其是get和getnext的綜合,是為了提高對被管理信息的訪問的效率而增加的。 set操作實現(xiàn)對被管理對象的管理信息進行寫操作,其實現(xiàn)直接對操作參數(shù)指定的oid所表示的被管理對象對應的管理信息的值的設置。 前面幾種消息是由管理工作站主動實現(xiàn)對被管理設備進行輪詢訪問時發(fā)出以得到被管理設備的各種信息;而在被管理設備出現(xiàn)異常事件需要及時向管理工作站報告時,就需要trap操作,該操作實現(xiàn)被管理設備向管理工作站報告設備上出現(xiàn)的異常事件,如網(wǎng)絡接口出現(xiàn)故障或恢復工作,設備重新啟動等信息。另外在snmpv2中新增加了一種inform操作來實現(xiàn)管理站和管理站之間的通信。 其中上述操作的消息都能在操作參數(shù)中一次指定一個或多個管理對象oid信息,也就是說一個消息一次能實現(xiàn)對多個被管理對象的操作。 snmpv1和snmpv2c采用了一種簡單的基于一起體名的安全機制: 管理站和被管設備上都存儲有該充當密碼作用的一起體名;消息發(fā)送者(一般是管理者)在要發(fā)送的消息中的一起體名字段中填入對應于接收者的一起體名,然后以明文方式在網(wǎng)絡上發(fā)送消息,接收方(被管理設備)接收到消息以后,如果消息格式是正確的,則讀取該字段,和自身保存的一起體名相比較,來實現(xiàn)對發(fā)送消息者的認證。在一些實現(xiàn)中,對應于每個一起體名更有一個機器地址列表,來表示只有地址在這個列表中的機器使用該一起體名發(fā)送的消息才認為是可信的。這里的一起體名就擔任密碼的作用。同時對應于每個一起體名都有一個訪問控制權限,可能值為讀或讀寫。只有請求的操作和使用的一起體名的權限一致才允許進行。 周詳情況請參考rfc 1157、rfc 1902、rfc 2273、rfc 2274。 mrtg的安裝設置 安裝支持軟件 我們這里以rehat7.2為例子討論mrtg的設置和安裝。要安裝mrtg需要安裝以下軟件包:gcc、perl、gd、libpng和zlib。能使用下面的命令來判斷系統(tǒng)是否安裝有這些軟件包: [root@mail doc]# rpm -qa|grep gd [root@mail doc]# rpm -qa|grep perl [root@mail doc]# rpm -qa|grep libp [root@mail doc]# rpm -qa|grep zlib 如果發(fā)現(xiàn)哪個軟件包沒有安裝,只需直接從redhat安裝盤安裝對應的rpm包即可,例如: mrtg的安裝 目前mrtg的最新版本為2.9.17: [root@mail src]# tar xvfz mrtg-2.9.17.tar.gz 到目前我們就已正確地安裝了mrtg系統(tǒng)。 設置snmp服務 對于不同的設備,設置snmp支持的方法是不一致的,具體請參考設備的隨機文件,一般里面都有周詳?shù)慕榻B。這里我們討論在linux環(huán)境下設置snmp服務器,以實現(xiàn)對本機流出流入數(shù)據(jù)的分析和報表(我的應用環(huán)境是使用linux帶動一個小型局域網(wǎng)上網(wǎng),監(jiān)視本機進出流量)。 在linux環(huán)境下安裝snmp軟件包是非常容易的,只需要安裝相應的軟件包即可: [root@mail doc]# rpm -qa|grep snmp 這時候運行下面的命令: [root@mail doc]# /etc/rc.d/init.d/snmpd start 如果命令輸出如上所示,就表示snmp服務器啟動正常。 為了配合mrtg使用,還要修改snmpd的設置,以使其允許mrtg讀取其interface(網(wǎng)絡接口)流量數(shù)據(jù)。 vi /etc/snmp/snmpd.conf 將 #view systemview included mib2 的內容修改為: view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc 然后將 access notconfiggroup "" any noauth exact systemview none none 修改為: access notconfiggroup "" any noauth exact mib2 none none 然后再重新啟動snmpd: /etc/rc.d/init.d/snmpd restart 設置mrtg 下一步就是要設置mrtg,實現(xiàn)對網(wǎng)絡設備的監(jiān)視。mrtg的設置信息都是保存在mrtg.cfg文件中的,創(chuàng)建該文件并且在其中定義希望的監(jiān)視特性。幸運的是一般不必直接手工編輯該設置文件,因為mrtg軟件包提供有cfgmaker設置工具,這是個腳本文件,根據(jù)運行參數(shù)能自動生成mrtg.cfg設置文件。在mrtg源碼目錄的bin子目錄下你能得到該工具。 首先在www服務器的documentroot目錄下創(chuàng)建一個子目錄用來存放mrtg生成的統(tǒng)計文件,這里假設apache是默認安裝,因此documentroot在/var/www/html目錄下,我們在該目錄下創(chuàng)建子目錄mrtg: mkdir /var/www/html/mrtg 這里的/var/www/html/mrtg就是mrtg的工作目錄。下面就生成mrtg設置文件: cfgmaker --global "workdir: /var/www/html/mrtg" 這里的--global參數(shù)表示后面的選項是對后面指定的設備都是有效的(如果希望對多個設備進行監(jiān)視時,該參數(shù)就會發(fā)生作用)。workdir用來指示mrtg的工作目錄;options用來指定一些特定的選項,這里的growright,bits是用來指定默認options設置的,對于常見的應用來說默認options設置就能滿足需求了。ifref用來指示用什么選項來標識設備接口,這里指定使用ip地址來標識網(wǎng)絡設備接口。ifref能指定為nr、ip、eth、descr、name。nr表示用接口在mibii庫中interface接口的ifindex來識別接口;ip表示使用ip地址識別接口;eth表示使用接口的物理地址標識接口;descr表示使用接口的描述信息來標識接口;name表示使用接口名來標識接口。一般來說ip地址是唯一的,不過有些情況下接口是沒有ip地址的,例如交換機就會出現(xiàn)這種情況。對于接口來說nr(接口號)是唯一的,因此對于一般情況使用ip地址就能了,而對于其他一些情況則需要采用nr了。"--output /etc/mrtg.cfg"標識將生成的設置文件存放在/etc/目錄下。"public@192.168.0.1"表示監(jiān)視ip地址為192.168.0.1的設備,采用public作為一起體名通過snmp協(xié)議來監(jiān)視設備192.168.0.1。 對于希望使用mrtg來對多個設備進行監(jiān)視的情況,舉例如下: cfgmaker --global "workdir: /var/www/html/mrtg" 這里指示監(jiān)視四個設備:router1.place.xyz、router2.place.xyz、switch1.place.xyz 對于我這里的應用環(huán)境來說,生成的mrtg.cfg內容如下: # created by
# for unix # or for nt ### global defaults # to get bits instead of bytes and graphs growing to the right workdir: /var/www/html/mrtg ######################################################################
# # maintainer: root (configure /etc/snmp/snmp.local.conf) # description: lo # iftype: softwareloopback (24) # ifname: # max speed: 10.0 mbits/s # ip: 127.0.0.1 (localhost) #
target[192.168.0.1_211.99.43.158]: /211.99.43.158:public@192.168.0.1:
system: 192.168.0.1 in unknown (edit /etc/snmp/snmpd.conf) maintainer: root (configure /etc/snmp/snmp.local.conf) description: eth0 iftype: ethernetcsmacd (6) ifname: max speed: 10.0 mbits/s ip: 211.99.43.158 (192.168.0.1)
target[192.168.0.1_192.168.0.1]: /192.168.0.1:public@192.168.0.1: system: 192.168.0.1 in unknown (edit /etc/snmp/snmpd.conf) maintainer: root (configure /etc/snmp/snmp.local.conf) description: eth1 iftype: ethernetcsmacd (6) ifname: max speed: 10.0 mbits/s ip: 192.168.0.1 (192.168.0.1)
運行mrtg 一旦生成正確的設置文件,就運行下面的命令: /usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg 這將查詢被監(jiān)視的設備并在工作目錄下創(chuàng)建初始的流量圖和web頁面,在前三次運行時可能會報告遺失日志文件的告警信息,不要理睬這些信息,只需要連續(xù)運行三次以后再運行就不會產(chǎn)生告警信息了。如果仍然出現(xiàn)告警那么就需要察看問題出在哪里了。 使用手工運行mrtg并不能定時產(chǎn)生適當?shù)慕y(tǒng)計信息,因此最佳還是定時自動運行mrtg來生成統(tǒng)計信息,默認為五分鐘運行一次。作為root身份crontab -e進入編輯狀態(tài),添加內容如下: */5 * * * * /usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg 然后就能通過瀏覽器訪問地址http://192.168.0.1/mrtg/選擇適當?shù)慕涌诘刂凡炜戳髁啃畔⒘?。如果希望生成類似?A >http://www.stat.ee./mrtg/的信息,就需要自己手工編輯一個index.html文件存放在/var/www/html/mrtg目錄下,內容為接口說明及該接口的日統(tǒng)計信息的圖即可。 |
|