歡迎您光臨本站 註冊首頁

網路流量監控器mrtg全攻略

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  簡介

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 <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: '00-d0-b7-b7-bb-30' ###

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 <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: '00-10-4b-0c-b4-23' ###

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 <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

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


[火星人 ] 網路流量監控器mrtg全攻略已經有1532次圍觀

http://coctec.com/docs/linux/show-post-67883.html