Multi Router Traffic Grapher------MRTG是一個監控網路鏈路流量負載的工具軟體,通過snmp協定得到設備的流量信息,並將流量負載以包含PNG格式的圖形的HTML 文檔方式顯示給用戶,以非常直觀的形式顯示流量負載。
基本介紹
- 中文名:MRTG
- 兼容性:Linux1.2.x, 2.0.x
- 支持:SNMPv2c
- 特色:源碼開放
- 推出:1995年春天
簡介,歷史發展,特色,兼容性,安裝配置,軟體支持,配置SNMP,配置mrtg,運行mrtg,SNMP簡介,SNMP元素,業界需求,主版本,主要分類,SNMPv1,SNMPv2c,SNMPv3,管理系統,管理對象,共同體,
簡介
MRTG(Multi Router Traffic Grapher)是一套可用來繪出網路流量圖的軟體,由瑞士奧爾滕的Tobias Oetiker與Dave Rand所開發,此軟體以GPL授權。
歷史發展
MRTG最早的版本是在1995年春天所推出,以Perl所寫成,因此可以跨平台使用,它利用了SNMP送出帶有物件識別碼(OIDs)的請求給要查詢的網路設備,因此設備本身需支援SNMP。MRTG再以所收集到的資料產生HTML檔案並以GIF或PNG格式繪製出圖形,並可以日、周、月等單位分別繪出。它也可產生出最大值最小值的資料供統計用。
原本MRTG只能繪出網路設備的流量圖,後來發展出了各種plug-in,因此網路以外的設備也可由MRTG監控,例如伺服器的硬碟使用量、CPU的負載等。
最常用的管理協定就是簡單的網路管理協定(SNMP,Simple Network Management Protocol)。而我們用的MRTG(Multi Router Traffic Grapher)就是通過SNMP協定實現管理工作站與設備代理進程間的通訊,完成對設備的管理和運行狀態的監視。
特色
源碼開放:mrtg是用 perl編寫的,原始碼完全開放。
高可移植性的SNMP支持:mrtg 採用了 Simon Leinen 編寫的具有高可移植性的 SNMP 實現模組,從而不依賴於作業系統的SNMP模組支持。
支持SNMPv2c:MRTG 可以讀取 SNMPv2c 的64位記數器,從而大大減少了記數器迴轉次數。
可靠的接口標識:被監控設備的接口可以以IP位址、設備描述、SNMP對接口的編號及Mac 地址來標識。
常量大小的日誌檔案:MRTG 的日誌不會變大,因為這裡使用了獨特的數據合併算法。
自動配置功能:MRTG 自身有配置工具套件,使得配置過程非常簡單。
性能:時間敏感的部分使用 C 代碼編寫,因此具有很好的性能。PNG格式圖形:圖形採用GD 庫直接產生 PNG 格式。
可定製性:MRTG 產生的web頁面是完全可以定製的。
兼容性
mrtg軟體可以運行在以下的作業系統上:
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
OpenBSD2.x
Digital Unix4.0
SCOOpen Server 5.0
ReliantUNIX
NeXTStep3.3
OpenStep4.2
Mac OSX 10.1
And about and other sensible Unix
安裝配置
軟體支持
這裡以Redhat7.2為例子討論MRTG的配置和安裝。要安裝MRTG需要安裝以下軟體包:GCC、Perl、gd、libpng和zlib。
配置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.cfg檔案中的,創建該檔案並且在其中定義希望的監控特性。幸運的是一般不需要直接手工編輯該配置檔案,因為mrtg軟體包提供有cfgmaker配置工具,這是一個腳本檔案,根據運行參數可以自動生成mrtg.cfg配置檔案。在mrtg源碼目錄的bin子目錄下可以得到該工具。
運行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/選擇適當的接口地址察看流量信息了。
SNMP簡介
SNMP元素
①若干個需要被管理的網路設備節點,如路由器、伺服器等設備,每個節點上都運行著一個稱為設備代理(agent)的套用進程,其實現對被管理設備的各種被管理對象的信息如流量等的蒐集和對這些被管對象的訪問的支持;
②至少一個管理工作站,該管理站運行著管理平台套用系統,實現為管理員提供對被管設備的可視化的圖形界面,從而使管理員可以方便的進行管理;
③一個管理協定,用來定義設備代理和管理工作站之間管理信息傳送的規程。其中管理協定的操作是在管理框架下進行的,管理框架定義了和安全相關的認證,授權,訪問控制和加密策略等各種安全防護框架。
在運行 TCP/IP 協定的網際網路環境中,管理協定標準是簡單網路管理協定(Simple Network Management Protocol,SNMP),其定義了傳送管理信息的協定訊息格式及管理站和設備代理相互之間進行訊息傳送的規程。
業界需求
主版本
主要分類
分別為SNMPv1 ,SNMPv2和SNMPv3。其中SNMPv2又分為若干個子版本,其中SNMPv2c套用最為廣泛:
SNMPv1
是第一個正式協定版本,在RFC1155-RFC1158中定義,該版本採用了基於共同體 名的安全機制
SNMPv2c
這個版本被稱為基於共同體名的SNMPv2,使用基於共同體名的安全機制和 SNMPv2p做出的協定操作方面的擴充,由RFC1901-RFC1906定義
SNMPv3
該協定版本採用基於用戶的安全機制,其安全機制是在SNMPv2u和SNMPv2*基礎上 進行大量的評議以後進行了更新,並且對協定機的邏輯功能模組的進行了劃分而保證了良好的可擴充性,由RFC2271-RFC2275所定義。
管理系統
使用SNMP協定的網路管理系統管理結構工作一般包括:管理進程通過定時向各個設備的設備代理進程傳送查詢請求訊息(以輪詢方式),來跟蹤各個設備的狀態;而當設備出現異常事件如設備冷啟動等時,設備代理進程主動向管理進程傳送陷阱訊息,匯報出現的異常事件。這些輪詢訊息和陷阱訊息的傳送和接受規程及其格式定義都是由SNMP協定定義的;而被管理設備將其各種管理對象的信息都存放在一個稱為管理信息庫(Management Information Base)庫結構中。
其中SNMP協定是運行在UDP協定之上,它利用的是UDP協定的161/162連線埠。其中161連線埠被設備代理監聽,等待接受管理者進程傳送的管理信息查詢請求訊息;162連線埠由管理者進程監聽等待設備代理進程傳送的異常事件報告陷阱訊息,如Trap。
設備的所有的需要被管理的信息被看作一個各種被管理對象的集合,這些被管理對象由 OSI 定義在一個被稱作管理信息庫(Management Information Base,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信息,也就是說一個訊息一次可以實現對多個被管理對象的操作。
共同體
管理站和被管設備上都存儲有該充當密碼作用的共同體名;訊息傳送者(一般是管理者)在 要傳送的訊息中的共同體名欄位中填入對應於接收者的共同體名,然後以明文方式在網路 上傳送訊息,接收方(被管理設備)接收到訊息以後,如果訊息格式是正確的,則讀取該字 段,與自身保存的共同體名相比較,來實現對傳送訊息者的認證。在一些實現中,對應於 每個共同體名還有一個機器地址列表,來表示只有地址在這個列表中的機器使用該共同體 名傳送的訊息才認為是可信的。這裡的共同體名就擔任密碼的作用。同時對應於每個共同 體名都有一個訪問控制許可權,可能值為讀或讀寫。只有請求的操作和使用的共同體名的權 限一致才允許進行。
詳細情況請參考RFC 1157、RFC 1902、RFC 2273、RFC 2274。