網絡流量監控器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 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,實現對網絡設備的監控。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配置文件:

cfgmaker --global "WorkDir: /var/www/html/mrtg"
--global "Options[_]: growright,bits"
--ifref=ip
--output /etc/mrtg.cfg
public@192.168.0.1

這裡的--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/目錄 下。"public@192.168.0.1"表示監控IP地址為192.168.0.1的設備,採用public作為共同 體名通過snmp協議來監控設備192.168.0.1。

對於希望使用mrtg來對多個設備進行監控的情況,舉例如下:

cfgmaker --global "WorkDir: /var/www/html/mrtg"
--global "Options[_]: growright,bits"
--ifref=descr
--ifdesc=alias
public@router1.place.xyz
public@router2.place.xyz
--global "Options[_]: growright"
--ifref=name
--ifdesc=descr
public@switch1.place.xyz
--ifdesc=name
public@switch2.place.xyz > 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 public@192.168.0.1


### 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]: /127.0.0.1:public@192.168.0.1:
# 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 (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:

Target[192.168.0.1_211.99.43.158]: /211.99.43.158:public@192.168.0.1:
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 (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:

Target[192.168.0.1_192.168.0.1]: /192.168.0.1:public@192.168.0.1:
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 (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

然後就可以通過瀏覽器訪問地址http://192.168.0.1/mrtg/選擇適當的接口地址察看流量 信息了。如果希望生成類似於http://www.stat.ee.ethz.ch/mrtg/的信息,就需要自己手 工編輯一個index.html文檔存放在/var/www/html/mrtg目錄下,內容為接口說明以及該接 口的日統計信息的圖即可。

arrow
arrow
    全站熱搜

    Bluelove1968 發表在 痞客邦 留言(0) 人氣()