複製鏈接
請複製以下鏈接發送給好友

MRTG

鎖定
Multi Router Traffic Grapher------MRTG是一個監控網絡鏈路流量負載的工具軟件,通過snmp協議得到設備的流量信息,並將流量負載以包含PNG格式的圖形的HTML 文檔方式顯示給用户,以非常直觀的形式顯示流量負載。
中文名
MRTG
兼容性
Linux1.2.x, 2.0.x
支    持
SNMPv2c
特    色
源碼開放
推    出
1995年春天

MRTG簡介

MRTG(Multi Router Traffic Grapher)是一套可用來繪出網絡流量圖的軟件,由瑞士奧爾滕的Tobias Oetiker與Dave Rand所開發,此軟件以GPL授權。 [1] 

MRTG歷史發展

MRTG最早的版本是在1995年春天所推出,以Perl所寫成,因此可以跨平台使用,它利用了SNMP送出帶有物件識別碼(OIDs)的請求給要查詢的網絡設備,因此設備本身需支援SNMP。MRTG再以所收集到的資料產生HTML檔案並以GIF或PNG格式繪製出圖形,並可以日、周、月等單位分別繪出。它也可產生出最大值最小值的資料供統計用。 [1] 
原本MRTG只能繪出網絡設備的流量圖,後來發展出了各種plug-in,因此網絡以外的設備也可由MRTG監控,例如服務器的硬盤使用量、CPU的負載等。 [1] 
最常用的管理協議就是簡單的網絡管理協議(SNMP,Simple Network Management Protocol)。而我們用的MRTG(Multi Router Traffic Grapher)就是通過SNMP協議實現管理工作站與設備代理進程間的通訊,完成對設備的管理和運行狀態的監視。 [1] 

MRTG特色

源碼開放:mrtg是用 perl編寫的,源代碼完全開放。
高可移植性的SNMP支持:mrtg 採用了 Simon Leinen 編寫的具有高可移植性的 SNMP 實現模塊,從而不依賴於操作系統的SNMP模塊支持。
支持SNMPv2c:MRTG 可以讀取 SNMPv2c 的64位記數器,從而大大減少了記數器迴轉次數。
可靠的接口標識:被監控設備的接口可以以IP地址、設備描述、SNMP對接口的編號及Mac 地址來標識。
常量大小的日誌文件:MRTG 的日誌不會變大,因為這裏使用了獨特的數據合併算法。
自動配置功能:MRTG 自身有配置工具套件,使得配置過程非常簡單。
性能:時間敏感的部分使用 C 代碼編寫,因此具有很好的性能。PNG格式圖形:圖形採用GD 庫直接產生 PNG 格式。
可定製性:MRTG 產生的web頁面是完全可以定製的。

MRTG兼容性

mrtg軟件可以運行在以下的操作系統上:
Linux1.2.x, 2.0.x, 2.2.x, 2.4.x (IntelandAlphaandSparcandPowerPC)
Linux MIPS, Linux S/390
SunOS4.1.3
Solaris2.4, 2.5, 2.5.1, 2.6, 7, 8
AIX4.1.4, 4.2.0.0, 4.3.2
HPUX9,10,11
WindowsNT3.51, 4.0, 2k, XP
IRIX5.3, 6.2
BSDIBSD/OS 2.1, 4.x, 3.1
NetBSD1.5.x
FreeBSD2.1.x, 2.2.x, 3.1, 3.4, 4.x
Digital Unix4.0
SCOOpen Server 5.0
Mac OSX 10.1
And about and other sensible Unix

MRTG安裝配置

MRTG軟件支持

這裏以Redhat7.2為例子討論MRTG的配置和安裝。要安裝MRTG需要安裝以下軟件包:GCC、Perl、gd、libpng和zlib。

MRTG配置SNMP

對於不同的設備,配置SNMP支持的方法是不一致的,具體請參考設備的隨機文檔,一般裏面都有詳細的介紹。這裏討論在Linux環境下配置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的配置信息都是保存在mrtg.cfg文件中的,創建該文件並且在其中定義希望的監控特性。幸運的是一般不需要直接手工編輯該配置文件,因為mrtg軟件包提供有cfgmaker配置工具,這是一個腳本文件,根據運行參數可以自動生成mrtg.cfg配置文件。在mrtg源碼目錄的bin子目錄下可以得到該工具。

MRTG運行mrtg

一旦生成正確的配置文件,就運行下面的命令:
/usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg
這將查詢被監控的設備並在工作目錄下創建初始的流量圖和web頁面,在前三次運行時可 能會報告遺失日誌文件的告警信息,不要理睬這些信息,只需要連續運行三次以後再運行 就不會產生告警信息了。如果仍然出現告警那麼就需要察看問題出在哪裏了。
使用手工運行mrtg並不能定時產生適當的統計信息,因此最好還是定時自動運行mrtg來生 成統計信息,默認為五分鐘運行一次。作為root身份crontab -e進入編輯狀態,添加內容如下:
在配置文件中加入:RunAsDaemon: yes以守護進程的方式運行,自動五份鍾生成一次,就不用加ctrontab了。
顯示中方時錯誤處理方法: A.
看詳細頁時流量那裏顯示$1$2/秒。
在英文下:
In 935.6 kb/s (0.9%)
Out 5306.4 kb/s (5.3%)
可是在中文下顯示:
流入 935.6 $1$2/秒 (0.9%)
流出 5306.4 $1$2/秒 (5.3%)
vi /usr/local/mrtg/lib/mrtg2/locales_mrtg. pm
找到sub gb2312下面:
'([kMG]?)([bB])/s' => '\$1\$2/秒',
'([kMG]?)([bB])/min' => '\$1\$2/分',
'([kMG]?)([bB])/h' => '$1$2/時',
改成:
'([kMG]?)([bB])/s' => '$1$2/秒',
'([kMG]?)([bB])/min' => '$1$2/分',
'([kMG]?)([bB])/h' => '$1$2/時',
重新運行一次:
env LANG=C /usr/local/mrtg/bin/mrtg /etc/mrtg/mrtg.cfg
再看:
流入 935.6 kb/秒 (0.9%)
流出 5306.4 kb/秒 (5.3%)
然後就可以通過瀏覽器訪問地址http://192.168.0.1/mrtg/選擇適當的接口地址察看流量信息了。

MRTGSNMP簡介

MRTGSNMP元素

①若干個需要被管理的網絡設備節點,如路由器、服務器等設備,每個節點上都運行着一個稱為設備代理(agent)的應用進程,其實現對被管理設備的各種被管理對象的信息如流量等的蒐集和對這些被管對象的訪問的支持;
②至少一個管理工作站,該管理站運行着管理平台應用系統,實現為管理員提供對被管設備的可視化的圖形界面,從而使管理員可以方便的進行管理;
③一個管理協議,用來定義設備代理和管理工作站之間管理信息傳送的規程。其中管理協議的操作是在管理框架下進行的,管理框架定義了和安全相關的認證,授權,訪問控制和加密策略等各種安全防護框架。
在運行 TCP/IP 協議的互聯網環境中,管理協議標準是簡單網絡管理協議(Simple Network Management Protocol,SNMP),其定義了傳送管理信息的協議消息格式及管理站和設備代理相互之間進行消息傳送的規程。

MRTG業界需求

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

MRTG主版本

MRTG主要分類

分別為SNMPv1 ,SNMPv2和SNMPv3。其中SNMPv2又分為若干個子版本,其中SNMPv2c應用最為廣泛:

MRTGSNMPv1

是第一個正式協議版本,在RFC1155-RFC1158中定義,該版本採用了基於共同體 名的安全機制

MRTGSNMPv2c

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

MRTGSNMPv3

該協議版本採用基於用户的安全機制,其安全機制是在SNMPv2u和SNMPv2*基礎上 進行大量的評議以後進行了更新,並且對協議機的邏輯功能模塊的進行了劃分而保證了良好的可擴充性,由RFC2271-RFC2275所定義。

MRTG管理系統

使用SNMP協議的網絡管理系統管理結構工作一般包括:管理進程通過定時向各個設備的設備代理進程發送查詢請求消息(以輪詢方式),來跟蹤各個設備的狀態;而當設備出現異常事件如設備冷啓動等時,設備代理進程主動向管理進程發送陷阱消息,彙報出現的異常事件。這些輪詢消息和陷阱消息的發送和接受規程及其格式定義都是由SNMP協議定義的;而被管理設備將其各種管理對象的信息都存放在一個稱為管理信息庫(Management Information Base)庫結構中。
其中SNMP協議是運行在UDP協議之上,它利用的是UDP協議的161/162端口。其中161端口被設備代理監聽,等待接受管理者進程發送的管理信息查詢請求消息;162端口由管理者進程監聽等待設備代理進程發送的異常事件報告陷阱消息,如Trap。
設備的所有的需要被管理的信息被看作一個各種被管理對象的集合,這些被管理對象由 OSI 定義在一個被稱作管理信息庫(Management Information Base,MIB)的虛擬的信息庫中。

MRTG管理對象

是一個按照層次結構組織的樹狀結構(定義方式類似於域名系統),管理對象為定義為樹中的相應葉子節點。管理對象是按照模塊的形式組織,每個對象的父節點表示該種對象屬於上層的哪一個模塊。而且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信息,也就是説一個消息一次可以實現對多個被管理對象的操作。

MRTG共同體

管理站和被管設備上都存儲有該充當密碼作用的共同體名;消息發送者(一般是管理者)在 要發送的消息中的共同體名字段中填入對應於接收者的共同體名,然後以明文方式在網絡 上發送消息,接收方(被管理設備)接收到消息以後,如果消息格式是正確的,則讀取該字 段,與自身保存的共同體名相比較,來實現對發送消息者的認證。在一些實現中,對應於 每個共同體名還有一個機器地址列表,來表示只有地址在這個列表中的機器使用該共同體 名發送的消息才認為是可信的。這裏的共同體名就擔任密碼的作用。同時對應於每個共同 體名都有一個訪問控制權限,可能值為讀或讀寫。只有請求的操作和使用的共同體名的權 限一致才允許進行。
詳細情況請參考RFC 1157、RFC 1902、RFC 2273、RFC 2274。
參考資料