天天看點

網絡監控器mrtg全攻略

MRTG簡介

   Mrtg(Multi Router Traffic Grapher,MRTG)是一個監控網絡鍊路流量負載的工具軟體,它通過snmp協定從裝置得到裝置的流量資訊,并将流量負載以包含PNG格式的圖形的 HTML文檔方式顯示給使用者,以非常直覺的形式顯示流量負載(可以在網站http://www.stat.ee.ethz.ch/mrtg/)得 到mrtg的輸出結果示例。關于mrtg的詳細資訊可以從以下網站了解:http://people.ee.ethz.ch/~oetiker/webtools/mrtg得到。

MRTG特色:

可移植性:目前可以運作在大多數Unix系統和Windows NT之上。

源碼開放:Mrtg是用perl編寫的,源代碼完全開放。

高可移植性的SNMP支援:Mrtg采用了Simon Leinen編寫的具有高可移植性的SNMP實作子產品,進而不依賴于作業系統的SNMP子產品支援。

支援SNMPv2c:MRTG可以讀取SNMPv2c的64位的記數器,進而大大減少了記數器回轉次數。

可靠的接口辨別:被監控的裝置的接口可以以IP位址、裝置描述、SNMP對接口的編号及Mac位址來辨別。

常量大小的日志檔案:MRTG的日志不會變大,因為這裡使用了獨特的資料合并算法。

自動配置功能:MRTG自身有配置工具套件,使得配置過程非常簡單。

性能:時間敏感的部分使用C代碼編寫,是以具有很好的性能。

PNG格式圖形:圖形采用GD庫直接産生PNG格式。

可定制性:MRTG産生的web頁面是完全可以定制的。

   mrtg的首頁是http://www.mrtg.org,可以從這裡下載下傳軟體。

MRTG相容性

   mrtg軟體可以運作在以下的作業系統上:

   Linux 1.2.x, 2.0.x, 2.2.x, 2.4.x (Intel and Alpha and Sparc and PowerPC)

   Linux MIPS, Linux S/390

   SunOS 4.1.3

   Solaris 2.4, 2.5, 2.5.1, 2.6, 7, 8

AIX 4.1.4, 4.2.0.0, 4.3.2 
    HPUX 9,10,11 
    WindowsNT 3.51, 4.0, 2k, XP 
    IRIX 5.3, 6.2 
    BSDI BSD/OS 2.1, 4.x, 3.1 
    NetBSD 1.5.x 
    FreeBSD 2.1.x, 2.2.x, 3.1, 3.4, 4.x 
    OpenBSD 2.x 
    Digital Unix 4.0 
    SCO Open Server 5.0 
    Reliant UNIX 
    NeXTStep 3.3 
    OpenStep 4.2 
    Mac OS X 10.1 
    And about and other sensible Unix      

   可以通過mrtg監控的裝置(目前市場上絕大多數産品都支援SNMP協定,隻要支援SNMP協定的裝置就都可以使用MRTG來監控):  

3Com NETBuilders, LANplex 6012 and 2500 
3Com etherswitches and hubs 
3Com Linkswitch 1000 1100 3300 
3Com Superstack II switch 3900, 3300 MX 
3Com 812 ADSL Router 
Alantec powerhub 7000 
Allied Telesyn - 8224XL and 8324XL 24 port managed switches 
Annex terminal server 
Asante Hub 
Ascend (Lucent) Max 600, [24]00x, Pipeline 50, TNT, APX-8000, MAX-6000 
Alcatel (Assured Access) x1600, OmniSR9, OmniCore 5022 
AT&T Wave Point, Lan 
BayNetworks (Wellfleet) 7.80 and up, BayStack 350T, Instant Internet, see Nortel 
BreezeCom AP,SA 
Cabletron ESX-820 Etherswitch, Smartswitch 2000,6000 and router 
Centillion Token Ring SpeedSwtich 100 (IBM 8251 Token Ring Switch) 
About every Cisco Kit there is ... 
CentreCOM 8116 
Compatible Systems 
DECBridge 620, DEC 900EF, 900EE, Gigaswitch 
ELSA Lancom L 11 (Wireless Router) 
Enterasys Matrix E5, VH-4802 and VH-2402S Switche 
Ericsson Tirgis Series RAS Servers 
Extreme Networks -- Blackdiamond 6808 & Alpine 3808 Layer 3 Switches 
Fore ASX200 ATM 
FlowPoint 2200 ATM/DSL Router 
Formula 8200 series 
Foundry BigIron 8000 Gigabit, FastIron Switch, ServerIron Switch 
Cable Modems from Lancity, Terayon and DOCSIS 
HP - network interfaces, disks, database Informix 
HP AdvanceStack/Procurve Switch 2000 and 2524, AdvanceStack Switch 200 
HP Procurve Switches , model 4000m, 2424m and 2400m 
IBM 8260 swtich (with 155MB ATM blades installed), IBM 2210 ISDN Routers. 
Intel switches (details) -- 510T, Intel Gigabit Server adapter 
IMV Victron NetPro 3000 UPS 
Kentrox Pacesetter Pro 
Lantronix Bridge 
Lucent/Xedia Access PointT 450, 1000 
Livingston (Lucent) IRX 3.2.1R, IRX 114, PM2E(R) PM3-2E OR-U 
Motorola 6560 Regional Node, SB3100 CableModem, 320, 6430 and 6455 routers 
Morningstar terminal servers/routers 
MGE (Merlin Gerin) UPSes (details) 
Network Appliance 
Netopia R7100C SDSL 
Netscreen 5 / 10 / 100 
Nortel Networks, Bay Routers BCN, BLN, ASN, ARN, AN, 
Passport 1k and Passport 8k3 series L3 switches, BayStack 450 L2 switches. 
Nortel Networks, Accelar L3 Switches 
Nokia IP 330/440/650 
Nbase ethernet switch 
Novell 3.11, 4.11 
Rmon probes 
SGI-Server (Irix 5.3) 
Any server server running HP-UX, Ultrix, Solaris, SunOS, OSF,
NetBSD, FreeBSD, BSDi, Linux, AIX, OpenBSD, Irix or even Windows operating systems (badly), 
when using NET-SNMP (former UCD-SNMP). 
Apple Mac (An snmp service is included on the OS CD >= 8.5 ) 
Shiva Accesport 
Solaris Server 
Squid Web cache 
US-Robotics Total Control Modemracks 
Wellfleet (later Bay Networks): see Nortel routers 
WaveWireless SpeedLan 8x00 RF Routers 
WinNT, MS Proxy 
Xylan (today Alcatel) 4024C 24port 10/100 OmniStack Switch, 9k devices, including ATM links. 
Yamaha rt100i 
Zyxel Prestige P310, 153X, 642. 
不支援mrtg的裝置: 
D-Link switches (details)      

SNMP簡介

   一個網絡管理系統一般要包含以下幾個元素:①若幹個(可能很多個)需要被管理的網絡裝置節點,如路由器、伺服器等裝置,每個節點上都運作着一個稱為裝置代理 (agent)的應用程序,其實作對被管理裝置的各種被管理對象的資訊如流量等的搜集和對這些被管對象的通路的支援;②至少一個管理工作站,該管理站運作着管理平台應用系統,實作為管理者提供對被管裝置的可視化的圖形界面,進而使管理者可以友善的進行管理;③一個管理協定,用來定義裝置代理和管理工作站之間管理資訊傳送的規程。其中管理協定的操作是在管理架構下進行的,管理架構定義了和安全相關的認證,授權,通路控制和加密政策等各種安全防護架構。

   在運作TCP/IP協定的網際網路環境中,管理協定标準是簡單網絡管理協定(Simple Network Management Protocol,SNMP),其定義了傳送管理資訊的協定消息格式及管理站和裝置代理互相之間進行消息傳送的規程。

   出于業界對網絡管理協定标準化的迫切要求的驅動,IETF于1990釋出了SNMPv1的正式RFC文檔;其設計思想重點放在保證協定的簡單性、靈活性和可擴充性上,并希望把SNMP作為一個過渡性的網管協定來作為實作對互連的網絡裝置進行管理時遵循的标準,待OSI的網絡管理協定—CMIP的開發、實作和标準化成熟和完善到可以在業界推廣之後,再用CMIP來替換SNMP。但是由于各種的原因,CMIP并沒有替代SNMP,而SNMP發展為業界的标準。

   SNMP一共發展有3個主版本,分别為SNMPv1 ,SNMPv2和SNMPv3。其中SNMPv2又分為若幹個子版本,其中SNMPv2c應用最為廣泛:

   SNMPv1: 是第一個正式協定版本,在RFC1155-RFC1158中定義,該版本采用了基于共同體名的安全機制;

   SNMPv2c: 這個版本被稱為基于共同體名的SNMPv2,使用基于共同體名的安全機制和SNMPv2p做出的協定操作方面的擴充,由RFC1901-RFC1906定義;

   SNMPv3: 該協定版本采用基于使用者的安全機制,其安全機制是在SNMPv2u和SNMPv2*基礎上進行大量的評議以後進行了更新,并且對協定機的邏輯功能子產品的進行了劃分而保證了良好的可擴充性,由RFC2271-RFC2275所定義。

運作SNMP管理系統的原理及SNMP協定:

   使用SNMP協定的網絡管理系統管理結構工作一般包括:管理程序通過定時向各個裝置的裝置代理程序發送查詢請求消息(以輪詢方式),來跟蹤各個裝置的狀态;而當裝置出現異常事件如裝置冷啟動等時,裝置代理程序主動向管理程序發送陷阱消息,彙報出現的異常事件。這些輪詢消息和陷阱消息的發送和接受規程及其格式定義都是由SNMP協定定義的;而被管理裝置将其各種管理對象的資訊都存放在一個稱為管理資訊庫(Management Information Base)庫結構中。

   其中SNMP協定是運作在UDP協定之上,它利用的是UDP協定的161/162端口。其中161端口被裝置代理監聽,等待接受管理者程序發送的管理資訊查詢請求消息;162端口由管理者程序監聽等待裝置代理程序發送的異常事件報告陷阱消息,如Trap。

   裝置的所有的需要被管理的資訊被看作一個各種被管理對象的集合,這些被管理對象由OSI定義在一個被稱作管理資訊庫(Management Information Base,MIB)的虛拟的資訊庫中。

管理對象庫MIB:

   MIB 是一個按照層次結構組織的樹狀結構(定義方式類似于域名系統),管理對象為定義為樹中的相應葉子節點。管理對象是按照子產品的形式組織,每個對象的父節點表示該種對象屬于上層的哪一個子產品。而且OSI為樹中每一層的每個節點定義唯一的一個數字辨別,每層中的該數字辨別從1開始遞增,這樣樹中的每個節點都可以用從根開始到目的節點的相應的辨別對應的一連串的數字來表示,如1.3.6.1.2.1.1表示了MIBII中系統組子樹,而 1.3.6.1.2.1.1.1.0表示系統組中的系統描述(sytem Descrption)對象。每個對象的一連串數字表示被稱為對象辨別符(Object Indentifier,OID)。

   相關的一組對象的集合被定義為一個MIB子產品。這些子產品使用OSI的抽象文法标記(Abstract Syntax Notation One,ASN.1)的一個子集寫成。該子集被定義為管理資訊結構(Management Information,SMI)。

   SNMP的消息在發送和傳輸時消息是采用基本編碼規則(BER)對消息進行編碼。

   SNMP基本的标準MIB庫是MIBII,具體請參考RFC 1213。

SNMP協定操作

   SNMP提供有三類操作,分别為Get,Set和Trap。

   Get操作實作對被管理對象所表示的管理資訊的讀操作。在SNMPv1中,GET操作具體一共有兩種形式 Get 和GetNext操作: Get操作訓示直接讀取操作參數指定的OID所表示的被管理對象的管理資訊值。GetNext操作訓示讀取操作參數指定的OID所表示的被管理對象在 MIB樹中按照字典順序的下一個被管理對象的管理資訊的值。在SNMPv2中,增加了一種GetBulk操作,其是Get和GetNext的綜合,是為了提高對被管理資訊的通路的效率而增加的。

   Set操作實作對被管理對象的管理資訊進行寫操作,其實作直接對操作參數指定的OID所表示的被管理對象對應的管理資訊的值的設定。

   前面幾種消息是由管理工作站主動實作對被管理裝置進行輪詢通路時發出以得到被管理裝置的各種資訊;而在被管理裝置出現異常事件需要及時向管理工作站報告時,就需要Trap操作,該操作實作被管理裝置向管理工作站報告裝置上出現的異常事件,如網絡接口出現故障或恢複工作,裝置重新啟動等資訊。另外在 SNMPv2中新增加了一種Inform操作來實作管理站與管理站之間的通信。

其中上述操作的消息都可以在操作參數中一次指定一個或多個管理對象OID資訊,也就是說一個消息一次可以實作對多個被管理對象的操作。

   SNMPv1和SNMPv2c采用了一種簡單的基于共同體名的安全機制:

   管理站和被管裝置上都存儲有該充當密碼作用的共同體名;消息發送者(一般是管理者)在要發送的消息中的共同體名字段中填入對應于接收者的共同體名,然後以明文方式在網絡上發送消息,接收方(被管理裝置)接收到消息以後,如果消息格式是正确的,則讀取該字段,與自身儲存的共同體名相比較,來實作對發送消息者的認證。在一些實作中,對應于每個共同體名還有一個機器位址清單,來表示隻有位址在這個清單中的機器使用該共同體名發送的消息才認為是可信的。這裡的共同體名就擔任密碼的作用。同時對應于每個共同體名都有一個通路控制權限,可能值為讀或讀寫。隻有請求的操作和使用的共同體名的權限一緻才允許進行。

   詳細情況請參考RFC 1157、RFC 1902、RFC 2273、RFC 2274。

MRTG的安裝配置

   安裝支援軟體

   我們這裡以Rehat7.2為例子讨論MRTG的配置和安裝。要安裝MRTG需要安裝以下軟體包:GCC、Perl、gd、libpng和zlib。可以使用下面的指令來判斷系統是否安裝有這些軟體包:

[root@mail doc]# rpm -qa|grep gd 
        gd-1.8.4-4 
        gd-devel-1.8.4-4 
    [root@mail doc]# rpm -qa|grep perl 
        perl-5.6.0-17 
        mod_perl-1.24_01-3 
    [root@mail doc]# rpm -qa|grep libp 
        libpng-1.0.12-2 
        libpng-devel-1.0.12-2 
    [root@mail doc]# rpm -qa|grep zlib 
        zlib-1.1.3-24 
        zlib-devel-1.1.3-24 
    [root@mail doc]# rpm -qa|grep gcc 
        gcc-2.96-98 
        gcc-g77-2.96-98 
        gcc-c++-2.96-98      

   如果發現哪個軟體包沒有安裝,隻需直接從redhat安裝盤安裝對應的rpm包即可,例如:

[root@mail doc]# rpm -ivh zlib-1.1.3-24 zlib-devel-1.1.3-24 
    MRTG的安裝 
    目前mrtg的最新版本為2.9.17: 
    [root@mail src]# tar xvfz mrtg-2.9.17.tar.gz 
    [root@mail src]# cd mrtg-2.9.17 
    [root@mail mrtg-2.9.17]# ./configure --prefix=/usr/local/mrtg-2 
    [root@mail mrtg-2.9.17]# make 
    [root@mail mrtg-2.9.17]# make install       

   到現在我們就已經正确地安裝了MRTG系統。

配置SNMP服務

   對于不同的裝置,配置SNMP支援的方法是不一緻的,具體請參考裝置的随機文檔,一般裡面都有詳細的介紹。這裡我們讨論在Linux環境下配置SNMP伺服器,以實作對本機流出流入資料的分析和報表(我的應用環境是使用Linux帶動一個小型區域網路上網,監控本機進出流量)。

在linux環境下安裝snmp軟體包是很容易的,隻需要安裝相應的軟體包即可:

[root@mail doc]# rpm -qa|grep snmp 
        ucd-snmp-4.2.1-7 
        ucd-snmp-utils-4.2.1-7 
        ucd-snmp-devel-4.2.1-7 
    這時候運作下面的指令: 
    [root@mail doc]# /etc/rc.d/init.d/snmpd start 
        Starting snmpd: [ OK ]       

   如果指令輸出如上所示,就表示snmp伺服器啟動正常。

   為了配合mrtg使用,還要修改snmpd的配置,以使其允許mrtg讀取其interface(網絡接口)流量資料。

   vi /etc/snmp/snmpd.conf

   将 #view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc 的内容修改為:

       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,實作對網絡裝置的監控。mrtg的配置資訊都是儲存在mrtg.cfg檔案中的,建立該檔案并且在其中定義希望的監控特性。幸運的是一般不需要直接手工編輯該配置檔案,因為mrtg軟體包提供有cfgmaker配置工具,這是一個腳本檔案,根據運作參數可以自動生成 mrtg.cfg配置檔案。在mrtg源碼目錄的bin子目錄下你可以得到該工具。

   首先在www伺服器的DocumentRoot目錄下建立一個子目錄用來存放mrtg生成的統計檔案,這裡假設apache是預設安裝,是以DocumentRoot在/var/www/html目錄下,我們在該目錄下建立子目錄mrtg:

   mkdir /var/www/html/mrtg

   這裡的/var/www/html/mrtg就是mrtg的工作目錄。下面就生成mrtg配置檔案:

   /usr/local/mrtg-2/bin/cfgmaker

   --global "WorkDir: /var/www/html/mrtg"

   --global "Options[_]: growright,bits"

   --ifref=ip

   --output /etc/mrtg.cfg

   [email protected]

   這裡的--global參數表示後面的選項是對後面指定的裝置都是有效的(如果希望對多個裝置進行監控時,該參數就會發生作用)。WorkDir用來訓示 mrtg的工作目錄;Options用來指定一些特定的選項,這裡的growright,bits是用來指定預設options配置的,對于常見的應用來說預設options配置就可以滿足需求了。ifref用來訓示用什麼選項來辨別裝置接口,這裡指定使用IP位址來辨別網絡裝置接口。ifref可以指定為nr、ip、eth、descr、name。nr表示用接口在MIBII庫中Interface接口的ifIndex來識别接口;IP表示使用ip位址識别接口;eth表示使用接口的實體位址辨別接口;descr表示使用接口的描述資訊來辨別接口;name表示使用接口名來辨別接口。一般來說ip位址是唯一的,但是有些情況下接口是沒有IP位址的,例如交換機就會出現這種情況。對于接口來說nr(接口号)是唯一的,是以對于一般情況使用IP位址就可以了,而對于其他一些情況則需要采用nr了。"--output /etc/mrtg.cfg"辨別将生成的配置檔案存放在/etc/目錄下。"[email protected]"表示監控IP位址為 192.168.0.1的裝置,采用public作為共同體名通過snmp協定來監控裝置192.168.0.1。

對于希望使用mrtg來對多個裝置進行監控的情況,舉例如下:

/usr/local/mrtg-2/bin/cfgmaker

--global "WorkDir: /var/www/html/mrtg"

--global "Options[_]: growright,bits"

--ifref=descr

--ifdesc=alias

[email protected]

[email protected]

--global "Options[_]: growright"

--ifref=name

--ifdesc=descr

[email protected]

--ifdesc=name

[email protected] > mrtg.cfg

   這裡訓示監控四個裝置:router1.place.xyz、router2.place.xyz、switch1.place.xyz 和switch2.place.xyz,所有的裝置都采用共同體名public來進行監控。并且兩個路由器采用descr來作為裝置的描述資訊,而兩個交換機則采用alias作為裝置描述(這兩者是不同的,例如對于cisco路由器來說,對于descr來說裝置描述為"Serial0",而對于aliasl來說則為"Link to HQ")。

   對于我這裡的應用環境來說,生成的mrtg.cfg内容如下:

# Created by 
# /usr/local/mrtg-2/bin/cfgmaker --global WorkDir: /var/www/html/mrtg --global Options[_]: growright,bits 
--output /etc/mrtg.cfg --ifref=ip [email protected] 
### Global Config Options 
# for UNIX 
# WorkDir: /home/http/mrtg 
# or for NT 
# WorkDir: c:mrtgdata 
### Global Defaults 
# to get bits instead of bytes and graphs growing to the right 
# Options[_]: growright, bits 
WorkDir: /var/www/html/mrtg 
Options[_]: growright,bits 
###################################################################### 
# System: 192.168.0.1 
# Description: Linux 192.168.0.1 2.4.7-10smp #1 SMP Thu Sep 6 17:09:31 EDT 2001 i686 
# Contact: Root (configure /etc/snmp/snmp.local.conf) 
# Location: Unknown (edit /etc/snmp/snmpd.conf) 
###################################################################### 
### Interface 1 >> Descr: lo | Name: | Ip: 127.0.0.1 | Eth: ### 
### The following interface is commented out because: 
### * it is a Software Loopback interface 
# 
# Target[192.168.0.1_127.0.0.1]: /[email protected]: 
# SetEnv[192.168.0.1_127.0.0.1]: MRTG_INT_IP="127.0.0.1" MRTG_INT_DESCR="lo" 
# MaxBytes[192.168.0.1_127.0.0.1]: 1250000 
# Title[192.168.0.1_127.0.0.1]: Traffic Analysis for 127.0.0.1 -- 192.168.0.1 
# PageTop[192.168.0.1_127.0.0.1]: 
Traffic Analysis for 127.0.0.1 -- 192.168.0.1 
# 
# System: 192.168.0.1 in Unknown (edit /etc/snmp/snmpd.conf) 
# Maintainer: Root <root@localhost> (configure /etc/snmp/snmp.local.conf) 
# Description: lo 
# ifType: softwareLoopback (24) 
# ifName: 
# Max Speed: 10.0 Mbits/s 
# Ip: 127.0.0.1 (localhost) 
# 
### Interface 2 >> Descr: eth0 | Name: | Ip: 211.99.43.111 | Eth: 0-d0-b7-b7-bb-30 ### 
Target[192.168.0.1_211.99.43.158]: /[email protected]: 
SetEnv[192.168.0.1_211.99.43.158]: MRTG_INT_IP="211.99.43.158" MRTG_INT_DESCR="eth0" 
MaxBytes[192.168.0.1_211.99.43.158]: 1250000 
Title[192.168.0.1_211.99.43.158]: Traffic Analysis for 211.99.43.158 -- 192.168.0.1 
PageTop[192.168.0.1_211.99.43.158]: 
Traffic Analysis for 211.99.43.158 -- 192.168.0.1 
System: 192.168.0.1 in Unknown (edit /etc/snmp/snmpd.conf) 
Maintainer: Root <root@localhost> (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) 
### Interface 3 >> Descr: eth1 | Name: | Ip: 192.168.0.1 | Eth: 0-10-4b-0c-b4-23 ### 
Target[192.168.0.1_192.168.0.1]: /[email protected]: 
SetEnv[192.168.0.1_192.168.0.1]: MRTG_INT_IP="192.168.0.1" MRTG_INT_DESCR="eth1" 
MaxBytes[192.168.0.1_192.168.0.1]: 1250000 
Title[192.168.0.1_192.168.0.1]: Traffic Analysis for 192.168.0.1 -- 192.168.0.1 
PageTop[192.168.0.1_192.168.0.1]: 
Traffic Analysis for 192.168.0.1 -- 192.168.0.1 
> 
System: 192.168.0.1 in Unknown (edit /etc/snmp/snmpd.conf) 
Maintainer: Root <root@localhost> (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

   這将查詢被監控的裝置并在工作目錄下建立初始的流量圖和web頁面,在前三次運作時可能會報告遺失日志檔案的告警資訊,不要理睬這些資訊,隻需要連續運作三次以後再運作就不會産生告警資訊了。如果仍然出現告警那麼就需要察看問題出在哪裡了。

   使用手工運作mrtg并不能定時産生适當的統計資訊,是以最好還是定時自動運作mrtg來生成統計資訊,預設為五分鐘運作一次。作為root身份crontab -e進入編輯狀态,添加内容如下:

   */5 * * * * /usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg

   service crond restart

   service httpd restart

   service snmpd restart

生成index.html網頁:

   /usr/local/mrtg-2/bin/indexmaker /etc/mrtg.cfg --output=/var/www/html/mrtg/index.html

   然後就可以通過浏覽器通路位址http://192.168.0.1/mrtg/選擇适當的接口位址察看流量 資訊了。

在WINDOWS下安裝MRTG全攻略

   網絡流量監控

   在一個網絡中,作為網絡工程師或者網絡管理者,需要随時了解網絡的各種狀态,以判斷網絡是否處于健康狀态或者随時了解網絡的流量、每個路由器的流量、每個交換機端口的流量…,以供年度報告時向上級上司提供詳實的資料及圖形報告。在這裡,我先把自己有關如何擷取網絡流量的方法向大家講解一下,如果有必要,您可以立即動手,自己做一個公司的網絡流量監控圖出來。網絡流量的監控需要涉及到SNMP、PERL、MRTG和一點網頁的相關知識,現在我就STEP BY STEP給大家講解怎麼具體實施。我的水準有限,如有錯誤或者更好的解決辦法,還懇請大家提出,謝謝!

STEP BY STEP教您安裝PERL

   Perl 的安裝比較簡單了,目前使用的一般是Active Perl for windows,現在最新的版本是5.8.0,它需要使用者先安裝IIS或者APACHE等常用的WEB伺服器平台。在這裡,我就以最常用的IIS作為安裝的示例,如果大家需要在APACHE平台裡面安裝PERL,結果會稍有些不同.

   Perl 适用于五花八門的各種作業平台, 包括所有已知的 UNIX/Linux及微軟的作業系統, 以及足夠支援 POSIX 的下列平台: BeOS, Cygwin, Netware,MPE/iX, OS/2, QNX, VMS, VOS, 以及 z/OS. 麥金塔 MacOS Classic 的使用者也可以在http://dev.macperl.org/ 下載下傳專屬的移植版本.

   在本例子中,我們以ActivePerl-5.6.1作為安裝示例教大家怎麼安裝,Perl For WINDOWS 版本是msi的安裝包,一般的情況如ActivePerl-5.6.1.633-MSWin32-x86.msi ,大家可以去http://downloads.activestate.com/Ac...MSWin32-x86.msi 下載下傳最新版本的ActivePerl。

   安裝Perl的過程很簡單的,但還是要講解一下:

   我現在的環境是WINDOWS 2000 SERVER 英文版+PACK3 ,IIS5.0平台。

   1、 打開Perl的安裝檔案 ,點下一步,

   2、 沒得選擇,隻有同意協定才能下一步。

   3、 在這裡千萬要注意了,系統預設是安裝在 Perl 目錄裡面,但為了我們以後使用程式的友善,一定要記得修改為 usr 目錄,盤符一般應和web的根目錄所在的盤一緻,結果如下:            4、 下一個畫面會讓您确認是否使用[PPM3發送個人資訊至ASPN],還是省着點兒,不要選它,直接按下一步。

   5、 這裡可以全部選擇上,下一步。

   6、 提示準備好了開始安裝了,下一步。

   7、 開始安裝

   8、 硬碟一陣狂響之後,系統就安裝成功了!大概在等幾分鐘吧

   9、 安裝Perl 到此結束,是不是超級簡單。

   Perl 安裝好之後,您可以打開 [Internet Information Services]->[Default WebSite]->[Properties]->[Home Directory]->[Configuration]看到如下的畫面

   看到其中有pl,plx,就表示安裝成功了,其他.cgi的是我自己手工加上去的,方法是點選其他的[Add…]

   在出現的對話框中輸入如圖所示的字元串即可。

   然後我們可以測試一下安裝的結果,一般使用所謂的CGI探針,可以在網上找到。出現如上圖所示的内容,就表示我們的PERL安裝配置成功,可以進入下一步學習了。

STEP BY STEP教您設定SNMP

   我們将PERL安裝好後,要先設定一下您需要監控流量的裝置,它可能是路由器、交換機…甚至于一台安裝了WIN2K的電腦。隻要其支援SNMP的 traps,都可以使用來作用被監控的對象。我在這裡面以一台CISCO 2950交換機和華為2600路由器為例給大家介紹,因為涉及到IOS版本和其他不确定因素,在實際操作中,希望大家靈活運用。當然,下面的例子是我親手調試通過的,您隻需要改變一下相關名稱,就可以正常使用了。

   為了友善大家閱讀,我簡單的解釋一下:在設定community 字串時,不要使用預設的public,因為它無容易被某些黑客監聽,或者出現安全漏洞,可以選擇自己認為有意義的字元串;host是接收traps的主機IP名字,可以根據您的實際需要調整。

   以下指令在CISCO 2950環境裡面調試通過:

C:\telnet 您的交換機的IP 
User Access Verification 
Password: 
TNKSW>en 
Password: 
TNKSW# conf t 
TNKSW(config)# nmp-server community chinatnk RO 
TNKSW(config)# snmp-server trap-source FastEthernet0/1 
TNKSW(config)# snmp-server contact [email protected] 
TNKSW(config)# snmp-server host 192.168.0.6 chinatnk 
TNKSW(config)# snmp-server enable traps 
TNKSW# sh run 
TNKSW# wr 
(以下為部份摘錄show run指令) 
…… 
……       

   可以看到,到此我們的交換機的SNMP已經正常工作了,當然,最重要的是别忘了儲存呀,要不然就前功盡棄了,呵呵…

   再看看華為2600路由器的配置,其實也差不多的,不過華為的産品好象幾個指令的CISCO有些不一樣,^_^

C:\telnet 您的交換機的IP 
User Access Verification 
Password: 
qjrouter> en 
Password: 
qjrouter# conf (華為産品不帶terminal參數,*_*) 
qjrouter(config)#snmp-server ? 
community Enable SNMP ; set community string 
contact Text for mib object sysContact 
enable Enable SNMP Traps 
host Specify hosts to receive SNMP TRAPs 
location Text for mib object sysLocation 
trap-authentication Send TRAP on receipt of incorrect community string 
qjrouter(config)#snmp-server enable traps 
qjrouter(config)#snmp-server contact [email protected] 
qjrouter(config)#snmp-server location chinatnk 
qjrouter(config)#snmp-server community ? 
ro Read-only access with this community string 
rw Read-Write access with this community string 
qjrouter(config)#snmp-server community ro chinatnk 
qjrouter(config)# 
qjrouter#wr 
qjrouter#sh ru 
(以下為部份摘錄show run指令) 
…… 
……       

友情提示:一定要儲存,不要忘記了,^_^

STEP BY STEP教您安裝MRTG

   我們首先要從Internet上面下載下傳最新的MRTG回來,MRTG的官方網是:http: //people.ee.ethz.ch/~oetiker/webtools/mrtg/ MRTG的中國鏡象網址是:http://mrtg.openunion.org/ MRTG的下載下傳網址是:http://people.ee.ethz.ch/~oetiker/webtools/mrtg/pub/ ,現在最新的版本是:mrtg-2.9.27.zip 如果您使用的是LINUX或者UNIX系統,可以直接下載下傳mrtg-2.9.27.tar.gz 。軟體下載下傳回來後,我們要先将其解壓。由于MRTG是一個PERL寫的程式,不需要安裝,稍後有些安裝過程需要在DOS裡面完成,是以建議解壓的路徑為 C:\MRTG。

   下面給出詳細的安裝步驟:

   1、 運作cmd,進入DOS狀态;

   2、 c:\>cd\mrtg\bin 進入剛才解壓的MRTG目錄,準備執行指令;

   3、 使用perl mrtg 指令測試MRTG是否正确;

   4、 執行指令行perl cfgmaker [email protected] --global "WorkDir: c:\www\mrtg" --output mrtg.cfg

   這一行指令我要解釋一下:

   [email protected] 使用的是您需要獲得SNMP資料的裝置的community 和它的IP位址;

WorkDir: c:\www\mrtg 使用的是正确安裝MRTG後,需要使用到的WEB目錄,要根據實際情況更改;

   output mrtg.cfg 則是輸出後的配置檔案名稱;

   改好了之後按一下回車,系統就開始執行配置了。由于我是先使用的是交換機來作為的SNMP源,上面指令執行後,它會綁定24個端口,有一些資訊顯示出來,而路由器上沒有那麼多需要綁定的端口,是以資訊量會稍微少一些。

   此一步驟正常執行完後,系統将在MRTG的目錄下生成指定的mrtg.cfg檔案,我們下一步要做的就是修改MRTG檔案,使之符合我們的要求。

   有的裝置不支援SNMP協定,在這裡将會出現錯誤的提示資訊,請各位朋友注意一下。

   注意,如果您是需要同時監控多個裝置的流量,則需要修改output 參數後面的配置檔案名,此例中是mrtg.cfg。

   詳細資料如下:

C:\mrtg\bin>perl cfgmaker [email protected] --global "WorkDir: e:\webroot\mrt 
g" --output mrtg4.cfg 
--base: Get Device Info on [email protected]: 
--base: Vendor Id: cisco 
--base: Populating confcache 
--snpo: confcache [email protected]: Name Fa0/1 --> 1 
--snpo: confcache [email protected]: Name Fa0/2 --> 2 
--snpo: confcache [email protected]: Name Fa0/3 --> 3 
--snpo: confcache [email protected]: Name Fa0/4 --> 4 
--snpo: confcache [email protected]: Name Fa0/5 --> 5 
--snpo: confcache [email protected]: Name Fa0/6 --> 6 
--snpo: confcache [email protected]: Name Fa0/7 --> 7 
--snpo: confcache [email protected]: Name Fa0/8 --> 8 
--snpo: confcache [email protected]: Name Fa0/9 --> 9 
--snpo: confcache [email protected]: Name Fa0/10 --> 10 
--snpo: confcache [email protected]: Name Fa0/11 --> 11 
--snpo: confcache [email protected]: Name Fa0/12 --> 12 
--snpo: confcache [email protected]: Name Fa0/13 --> 13 
--snpo: confcache [email protected]: Name Fa0/14 --> 14 
--snpo: confcache [email protected]: Name Fa0/15 --> 15 
--snpo: confcache [email protected]: Name Fa0/16 --> 16 
--snpo: confcache [email protected]: Name Fa0/17 --> 17 
--snpo: confcache [email protected]: Name Fa0/18 --> 18 
--snpo: confcache [email protected]: Name Fa0/19 --> 19 
--snpo: confcache [email protected]: Name Fa0/20 --> 20 
--snpo: confcache [email protected]: Name Fa0/21 --> 21 
--snpo: confcache [email protected]: Name Fa0/22 --> 22 
--snpo: confcache [email protected]: Name Fa0/23 --> 23 
--snpo: confcache [email protected]: Name Fa0/24 --> 24 
--snpo: confcache [email protected]: Name Nu0 --> 25 
--snpo: confcache [email protected]: Name Vl1 --> 26 
--snpo: confcache [email protected]: Descr FastEthernet0/1 --> 1 
--snpo: confcache [email protected]: Descr FastEthernet0/2 --> 2 
--snpo: confcache [email protected]: Descr FastEthernet0/3 --> 3 
--snpo: confcache [email protected]: Descr FastEthernet0/4 --> 4 
--snpo: confcache [email protected]: Descr FastEthernet0/5 --> 5 
--snpo: confcache [email protected]: Descr FastEthernet0/6 --> 6 
--snpo: confcache [email protected]: Descr FastEthernet0/7 --> 7 
--snpo: confcache [email protected]: Descr FastEthernet0/8 --> 8 
--snpo: confcache [email protected]: Descr FastEthernet0/9 --> 9 
--snpo: confcache [email protected]: Descr FastEthernet0/10 --> 10 
--snpo: confcache [email protected]: Descr FastEthernet0/11 --> 11 
--snpo: confcache [email protected]: Descr FastEthernet0/12 --> 12 
--snpo: confcache [email protected]: Descr FastEthernet0/13 --> 13 
--snpo: confcache [email protected]: Descr FastEthernet0/14 --> 14 
--snpo: confcache [email protected]: Descr FastEthernet0/15 --> 15 
--snpo: confcache [email protected]: Descr FastEthernet0/16 --> 16 
--snpo: confcache [email protected]: Descr FastEthernet0/17 --> 17 
--snpo: confcache [email protected]: Descr FastEthernet0/18 --> 18 
--snpo: confcache [email protected]: Descr FastEthernet0/19 --> 19 
--snpo: confcache [email protected]: Descr FastEthernet0/20 --> 20 
--snpo: confcache [email protected]: Descr FastEthernet0/21 --> 21 
--snpo: confcache [email protected]: Descr FastEthernet0/22 --> 22 
--snpo: confcache [email protected]: Descr FastEthernet0/23 --> 23 
--snpo: confcache [email protected]: Descr FastEthernet0/24 --> 24 
--snpo: confcache [email protected]: Descr Null0 --> 25 
--snpo: confcache [email protected]: Descr Vlan1 --> 26 
--snpo: confcache [email protected]: Ip 192.168.0.4 --> 26 
--snpo: confcache [email protected]: Type 6 --> 1 
--snpo: confcache [email protected]: Type 6 --> 2 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 3 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 4 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 5 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 6 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 7 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 8 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 9 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 10 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 11 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 12 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 13 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 14 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 15 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 16 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 17 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 18 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 19 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 20 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 21 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 22 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 23 (duplicate) 
--snpo: confcache [email protected]: Type 6 --> 24 (duplicate) 
--snpo: confcache [email protected]: Type 1 --> 25 
--snpo: confcache [email protected]: Type 53 --> 26 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-81 --> 1 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-82 --> 2 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-83 --> 3 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-84 --> 4 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-85 --> 5 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-86 --> 6 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-87 --> 7 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-88 --> 8 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-89 --> 9 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-8a --> 10 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-8b --> 11 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-8c --> 12 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-8d --> 13 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-8e --> 14 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-8f --> 15 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-90 --> 16 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-91 --> 17 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-92 --> 18 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-93 --> 19 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-94 --> 20 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-95 --> 21 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-96 --> 22 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-97 --> 23 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-98 --> 24 
--snpo: confcache [email protected]: Eth --> 25 
--snpo: confcache [email protected]: Eth 00-0b-be-b2-b8-80 --> 26 
--base: Get Interface Info 
--base: Walking ifIndex 
--base: Walking ifType 
--base: Walking ifAdminStatus 
--base: Walking ifOperStatus 
--base: Walking ifAlias 
--base: Walking ifSpeed 
--base: Writing mrtg4.cfg 
C:\mrtg\bin>perl mrtg mrtg4.cfg 
C:\mrtg\bin> 
C:\mrtg\bin>perl cfgmaker [email protected] --global "WorkDir: e:\webroot\m 
rtg" --output mrtg5.cfg 
--base: Get Device Info on [email protected]: 
--base: Vendor Id: 
--base: Populating confcache 
--snpo: confcache [email protected]: Descr Ethernet0 --> 1 
--snpo: confcache [email protected]: Descr Serial0 --> 2 
--snpo: confcache [email protected]: Descr Bri0 --> 3 
--snpo: confcache [email protected]: Descr LoopBack0 --> 4 
--snpo: confcache [email protected]: Ip 127.0.0.1 --> 4 
--snpo: confcache [email protected]: Ip 192.168.0.254 --> 1 
--snpo: confcache [email protected]: Ip 202.104.141.177 --> 1 
--snpo: confcache [email protected]: Type 6 --> 1 
--snpo: confcache [email protected]: Type 23 --> 2 
--snpo: confcache [email protected]: Type 23 --> 3 (duplicate) 
--snpo: confcache [email protected]: Type 24 --> 4 
--snpo: confcache [email protected]: Eth 00-e0-fc-06-d4-21 --> 1 
--snpo: confcache [email protected]: Eth 00-00-00-00-00-00 --> 2 
--snpo: confcache [email protected]: Eth 00-00-00-00-00-00 --> 3 (duplicate 
) 
--snpo: confcache [email protected]: Eth 00-00-00-00-00-00 --> 4 (duplicate 
) 
--base: Get Interface Info 
--base: Walking ifIndex 
--base: Walking ifType 
--base: Walking ifAdminStatus 
--base: Walking ifOperStatus 
--base: Walking ifSpeed 
--base: Writing mrtg5.cfg 
C:\mrtg\bin>perl mrtg mrtg5.cfg 
C:\mrtg\bin> 
      

   5、 開始生成流量圖及配置檔案

   6、C:\mrtg\bin>perl mrtg mrtg.cfg

   指令成功執行完成後,将會在我們前一個指令所指定的WEB目錄裡面生成以IP+端口命名的網頁和一些png圖檔,這些圖檔就是網絡當時的流量圖。我們可以直接打開這個網頁檢查一下,看是否正常。剛開始生成後很多都是空白的,需要讓它自動運作一段時間後才可以有圖形表現出來。

   7、 要使MRTG可以随時得到最新的流量圖,我們還需要修改一下配置腳本,主要是剛才output參數所帶的檔案名mrtg.cfg,使用文本編輯器打開它。

   檔案頭部已經說明了在Windows系統裡面或者在UNIX系統裡面的不同配置方法,現在因為是新版的MRTG,已經自動在尾部添加了工作目錄,不需要我們再手工編輯。

   為了使網絡流量圖可以每5分鐘自動更新一次,我們還需要在 ###Global Config Options的下一行加入一條指令: RunAsDaemon: yes .這條指令的作用是使MRTG每5分鐘自動去擷取一次SNMP的資料及更新網絡流量圖形。 儲存檔案,退出。

   8、 當我們需要同時監控的裝置多于一個時或者裝置的接口多于一個時,将會涉及到生成了多個配置檔案,這樣檢視起來比較困難,這時我們需要使用indexmaker指令将多個資料收集起來做成一個檔案裡面。

   執行如下指令:

       C:\MRTG\BIN> perl indexmaker --output=index.htm mrtg.cfg

   此時,系統将會自動生成index.htm在我們指定的WEB目錄裡面,我們現在可以打開網頁檔案來檢視是否正常了。

   9、 為了使系統在每次開機後,能自動運作該指令,我們還需要在啟動裡面加入這個快捷方式。

   1)、在桌面擊右鍵,選擇快捷方式。

   2)、輸入快捷方式的運作指令行為 start /D c:\mrtg/bin wperl mrtg –logging=eventlog mrtg.cfg

   3)、輸入一個好記的檔案名,如”mrtg流量監控”。

   10、至此,MRTG已經可以正常運作了,并且會給我們提供每5分鐘流量圖,每日流量圖,每周流量圖,每月流量圖,每年流量圖。

   更詳細的安裝MRTG的方法在MRTG的官方網站:http://people.ee.ethz.ch/~oetiker/w...g/nt-guide.html 把流量圖加入您的網站 前面,我們已經生成了圖量圖檔案了,現在是把它美化,并加入您的網站。 我們使用Dreamwaver MX等網頁制作軟體打開它,按自己所需要或者網站的網格美化一下,就可以正常使用了。

推薦文章:

http://wenku.baidu.com/view/b95c8c00b52acfc789ebc99e.html

http://blog.chinaunix.net/uid-24373487-id-255057.html

http://www.cnblogs.com/see7di/archive/2012/12/10/2811041.html

http://wenku.baidu.com/view/b81d031dc281e53a5802ff48.html