麟瑞科技股份有限公司

Home>服務與支援>技術論壇>新世代網路應用>MRTG再進化──多功能的Cacti

服務與技術支援

技術論壇

MRTG再進化──多功能的Cacti
Author
作者:王光宜


在網路使用率越來越高、服務類型越來越多元的今天,如何在有限預算中降低IT管理成本,成了每一個資訊人員必需面臨到的難題。事實上,除了購買昂貴的設備軟體來分析及監控網路流量外,網管人員還是可以運用免費的開放原始碼(Open Source)工具,來達成基礎的網路流量及設備效能偵測分析。而提到網路流量分析統計軟體,大部份網管人員第一直覺都會想到MRTG。然而缺乏圖型化操作界面(GUI)及資訊使用彈性不夠,一直以來都是MRTG令人覺得不夠親切的地方。因此,透過圖型化操作界面來進行設定管理的Cacti,成為新一代資訊人員愛用的網路流量及設備效能監控分析軟體。

坊間及網路上已有不少關於Cacti的安裝說明文件,因此本文將不再贅述安裝方法,而將重點放在Cacti的運作原理以及相關應用介紹。
 

一、從MRTG 到Cacti

一般在進行網路流量分析統計時,大部份人會直覺想到MRTG(Multi Router Traffic Grapher)藍線綠底的曲線流量圖。1994年MRTG的開發者Tobi Oetiker,為了協助公司同事分析一條頻寬64K的對外電路,因而隨手寫了一支程式,針對網路介面流量進行相關的資料統計,這個小程式就是最原始的MRTG,在經歷了幾次改版和效能調校後,這套流量分析工具已經是許多網管人員常用的好幫手。

然而,隨著網路架構複雜化以及管理者需要更多的統計資訊,簡易的MRTG越來越無法滿足網管人員的需求;因此,MRTG的作者Tobi Oetiker在1999年為改善MRTG在資料統計上的限制,以MRTG為基礎下著手打造了RRDTool(Round Robin Database Tool)。

RRDTool在功能及效能上改善MRTG諸多不足的地方,但是相對在管理及操作的門檻也提升不少。RRDTool在語法上的複雜度,讓不少網路管理者為之怯步,因此在市場知名度及接受性大大不如MRTG。一直到了2001年Ian Berry以PHP及MySQL為基礎,將RRDTool及SNMP(Simple Network Management Protocol)進行整合,開發出圖型化操作界面(GUI)的Cacti,讓即使不瞭解RRDTool、PHP、MySQL語法的使用者,可以簡單快速的產生各種想要監控的物件資料。

自2004年公佈Cacti的0.8.6版以來,這十年間基於Open Source的精神,全世界陸續有多位高手及同好成為Cacti的開發者(Developer),除了針對Cacti原始程式的維護與修改補強外,同時也開發各式外掛套件及分享各大原廠設備的偵測模組(Template),不但增強Cacti原始程式碼的穩定性,也豐富了Cacti能夠擴充的資源。


二、Cacti 的運作機制

Cacti在資訊蒐集上, 除了使用公開標準的SNMP協定外,亦能接受透過Script語法方式,針對所需資料進行統計分析。以SNMP為例,Cacti會對偵測設備送出SNMP Polling query封包, 當設備收到Cacti發出的SNMP Polling query後,會回應Cacti相對應的數據資料,當Cacti收到偵測設備回應的數據後,會存放在Cacti主機中(圖一)。
 

圖一 Cacti透過SNMP協定來取得被偵測設備(Agent)資訊


SNMP協定使用UDP進行溝通,在Cacti與偵測設備之間的封包傳遞方式如圖二所示。因為SNMP協定使用UDP,在進行Polling過程中偶爾會出現Cacti無法成功收到被偵測設備回應的數據,這時並不代表網路或被偵測設備服務中斷,只能表示Cacti在這次Polling過程中,無法取得數據資料。
 
圖二 SNMP封包的傳遞方式


1. Cacti的運作流程
前面提到過,Cacti是以PHP及MySQL為基礎, 並結合SNMP及RRDTool的網路管理套件。運作上,Cacti伺服器裡是透過Poller.php這支程式來進行SNMP Polling動作,而被偵測設備的相關資訊(如:IP、Host Name、Community以及Interface)自MySQL中取得,而取回的數值資料利用RRDTool的PHP函式存放於RRDTool檔案中,運作流程如圖三。
 
圖三 Cacti運作流程


這樣的運作流程裡,MySQL存放著偵測設備的相關資訊以及Cacti裡graphs或Templates定義資料,而重要的偵測設備回應數據,則利用RRDTool套件存放於相關.rra檔案裡。當使用者登入Cacti點選各偵測設備graph時,才會經由PHP的RRDTool函式讀取相對應的.rra檔案,繪製完成相關的圖檔。這樣的處理流程中,重要的偵測數據是以File的模式存放,而不是存放於MySQL之中,對於MySQL而言,因為只存放設備的資訊而非偵測數據資料,資料異動少而且資料量不會一直增加,除了減輕主機的負擔外,也可以保護相關偵測數據資料存放的可靠性。

2. MRTG與RRDTool的數據記錄方式
如前所述,Cacti的運作有別於傳統MRTG,MRTG在每一次Polling完成後,相關偵測數據都直接繪製成日、週、月、年的.png圖檔,就算使用者未登入查詢相關流量資訊,MRTG仍忠實的自動產生靜態圖檔;而Cacti則是靈活利用RRDTool的create、update、graph三個指令,在每一次Polling完成後,僅用update的方式將數據存入.rra檔案中,當使用者登入查詢相關設備資訊時,才使用graph指令讀取.rra 檔案資料將圖形繪製出來。

MRTG雖然有相對應的.log檔(圖四)記錄每次取得的數據資料,但是若想針對特定時間週期重新繪製流量曲線圖,MRTG並沒有提供相對應的解決方式,雖然可以將相關.log檔匯入至Microsoft Office Excel程式裡自行產生,但是操作手續上十分繁複。如果是使用RRDTool存放相關設備數據時,使用者希望繪製出自行定義圖檔,只需使用RRDTool的graph指令自行產出即可。
 
圖四 MRTG .log檔內容


MRTG的.log檔案(表一)構成主要分為兩部份:第一筆只會有三欄資料,主要是統計流出入量的總合資訊;第二筆則是每五分鐘Polling詢問設備取回的資訊統計,各欄位數值代表意義如表一。在MRTG.log檔裡第一欄的時間計算方法,是從1970年一月一日零時開始累計秒數,以1391745606來換算,即為2014/02/07 12:00:06。
 

表一 MRTG.log各欄位說明


因為Cacti是利用RRDTool存放設備網路流量數據,在Cacti操作頁面上新增一個偵測點後,RRDTool立即使用create程式建立.rra的檔案。在RRDTool建立.rra檔案同時,利用相對應的語法(圖五)一併定義了數據存放方式。有別於MRTG只能存放平均、最大的流進流出數據,RRDTool可以在同個檔案中存放多筆數據,亦可調整數值平均週期以及存放數據的筆數等,由於這部份語法較複雜,而Cacti會自動完成建立的動作,在此不多做說明,若對RRDTool語法有興趣者可以至RRDTool官網查詢create指令的相關說明資料。
 
圖五 RRDTool建檔語法
 

三、Cacti 的圖形管理

在Cacti中新增偵測節點及建立偵測介面的操作,都可以透過Web連線方式進行維護及管理工作,比起傳統MRTG需要登入主機編修相關設定檔案文件,更容易讓網管人員學習上手。只要瞭解幾個Console介面的功能後,就可以完成基本的設備效能及流量偵測工作。

1. 新增設備的方法
在登入Cacti後, 主畫面可以分成三個區塊來說明(圖六)。第一個部份在畫面右上角會帶出目前使用的Cacti版本資訊;第二個部份在畫面上方,會帶出目前己經安裝並啟動的Plugins,如果需要針對相關Plugins進行資訊查詢,直接點選該Plugin分頁即可。在未安裝任何Plugin時,Cacti預設即有console及graphs兩項分頁,登入時預設是顯示console分頁,如果需要查看偵測介面等相關圖形,則是放在graphs頁面。第三個部份在畫面的左方,是管理控制台中的各項設定資訊。
 
圖六 Cacti管理畫面說明


如果需要新增一台偵測主機,也是經由Console頁面中,Management群組裡的Devices進行新增工作,或者登入後由主畫面中的Create devices,亦可進入設備管理畫面;待進入設備管理畫面後,點選Add即可新增設備(圖七、圖八)。
 
圖七 Cacti新增設備的方法:步驟一


圖八 Cacti新增設備的方法:步驟二


在設備管理頁面裡點選Add後,畫面會再帶到新增設備的管理頁面,這時候依實際環境需求填入各項相關資訊。General Host Options群組裡,只需填寫Description及Hostname(圖九),Description是填入設備描述,主要會顯示在設備管理清單以及每一次偵測圖形的標題裡;而Hostname可填入IP或完整Hostname;另外,在SNMP Options群組裡,需依實際狀況選擇SNMP Version 及填入SNMP Community(圖十)。基本設定上,只需要將這四個欄位填寫完成即可開始針對該設備進行偵測工作,其於欄位使用預設值即可,若有興趣想瞭解各項欄位所代表的參數,可至Cacti官網中查詢相關的設定意義。
 
圖九 新增設備管理頁面一


圖十 新增設備管理頁面二


2. 新增介面的方法
在完成新增設備後,在設備管理頁面中點選設備名稱後,即可進入設備資訊頁面,這個畫面和新增設備頁面相似,因此若需要針對在上一小節中提到的各項欄位進行修改,亦可透過這個方法進入本頁面進行異動(圖十一)。如果需要新增偵測介面,則點選本頁面右上角Create Graphs for this Host,進入介面管理頁面(圖十二)。進入介面管理頁面後,會帶出這設備的所有介面(包括EtherChannal、Vlan及實體介面),此時勾選需要偵測的介面後,再選擇Graph type後,按Create鈕即完成新增。
 
圖十一 設備資訊頁面

 
圖十二 介面管理頁面


3. Cacti的圖形管理
在Cacti的每一張圖旁邊,都有四個好用的圖形管理小工具(圖十三),其功用與說明如表二。
 
圖十三 圖形管理工具

 
表二 Cacti圖形管理工具


Zoom Graph可以隨管理者的需要放大偵測圖形。以圖十三為例,如果需要看月報表中Week12的資料,點選Zoom Graph(放大鏡圖示)後,選取月報表中Week12的部份,圖形立即呈現Week12的偵測資料(圖十四)。
 

圖十四 Zoom Graph工具


至於CSV Export及Graph Source/Properties,提供詳細的偵測資訊資料及RRDtool繪圖語法,當圖形出現異常時,可以提供更多資訊來協助修復所面臨的問題。

在設備以及偵測介面越來越多後,Cacti在Graphs裡提供樹狀目錄的圖形管理功能,可以依使用者的需要,將偵測圖形分門別類,以方便管理在最短時間內查詢相關偵測圖形(圖十五)。
 

圖十五 以樹狀目錄管理各類圖形


四、Cacti 的相關應用

1. Cacti Plugins
Cacti豐富的Plugins套件,將許多網路管理上常用及好用的軟體整合至Cacti 系統中,除了有效減輕網管人員所需管理Server數量,整合化的頁面(圖十六)也簡化了管理者分析問題時的工作,不再需要同時登入多台主機查閱相關歷史資料。

圖十六 將monitor及Weathermap等套件整合進Cacti


舉例來說,我們可以讓Cacti兼當syslog Server(安裝Pluginssyslog套件),當設備出現異常時不用一台一台登入網路設備查看log記錄,假設在Cacti偵測資訊裡發現到某一台設備CPU出現異常,管理者只需要在同個web頁面中點至syslog頁面查詢該設備的log資訊即可。

除此之外,管理者可以利用Weathermap套件,依企業或單位的網路架構,繪製出符合使用者實際環境的總體流量資訊圖(圖十七),而Weathermap 透過Java script的語法,只要將滑鼠移至架構圖中任一電路上,即帶出該電路的歷史流量統計圖。除了上述兩個套件外,想要偵測多台主機的運作情形,可以使用monitor套件、想要進行netflow統計分析,可以使用flowview套件、針對組織內大量使用者的mac address管理,可以使用MacTrack套件以及想要由Cacti提供警報功能時,則可以使用Thold套件。
 

圖十七 使用Weathermap 繪製的網路流量資訊


網路管理者可以依自己的網路環境加裝所需的套件,安裝方法與使用說明在Cacti Docs網站裡有詳細的說明,如果在安裝使用或是操作上遇到無法解決的問題以及程式相關的bugs問題,可以至Cacti Forums將所遇到的問題提出,或是搜尋前人遭遇同樣的問題時相關的解決方法。

2. Cacti Graph Templates
雖然Cacti 在安裝完成後提供部份廠牌設備的Templates(如:Cisco、Linux),但是如果需要偵測其他廠牌設備的CPU、Memory、session時, 可以利用自行定義Templates的方式,產生所需要偵測的數據資料。

一般來說,市面上有提供網管功能的設備,只要原廠的MIB資料夠完整時,都可以利用SNMP協定取回相對應的偵測數據。舉例來說,今天想取得Cisco SCE 8000裡統計的flows數,可以透過Cisco SCE的OID:1.3.6.1.4.1.9.9.634.1.1.1.4.38取得相對應的數據。當Cacti取回數據資料後,即可如一般流量統計計錄flows數量(圖十八)。



圖十八 Cisco SCE 8000的TCPFlow數


然而在取得相關MIB值以及設定Cacti Graph Templates流程較複雜,如果不想自行建立Graph Templates,亦可以至Cacti Docs尋找由網友共享的GraphTemplates。以F5 BIG-IP LTM為例,至Cacti Docs下載檔案解壓縮後,將檔案由Cacti的Console頁面Import Templates即可;如果想將自己建立的Templates共享或儲存,可以使用Export Templates選項,將建立完成的Templates匯出成.xml檔案。
 

五、結語

在進行障礙查修工作時,一般來說在問題發生當下所取得的資訊(如:介面流量資訊或CPU Loading等)最有利用價值,因為管理者可以即時與使用者所反應的網路問題進行交叉比對。然而,在查修時若需要回溯到兩天前或是一週前的網路及設備使用情形,有了歷史統計資料即可便於我們回溯事發當時的設備使用情形。因此,MRTG或是Cacti等能提供歷史記錄報表資料的軟體,可以解決這部份的需求。透過GUI點選操作的Cacti,可以用最短的時間新增完成新的偵測介面,此外,豐富的外掛套件也強大了Cacti在網管上的運用。但是,因為Cacti為Open Source,當程式或相關套件出現bug時,除了自己修復外,再來就只能到官網社群尋求解決方法,相對於軟體開發商完整的售後服務,Cacti在這一塊顯得相對薄弱許多。

到底企業需要使用Open Source 或是商業軟體來進行網路管理工作呢?雖然Open Source的Cacti看似不需太高的建置成本,但是若對Linux、PHP及MySQL沒有基礎的概念時,在管理Cacti時可能會耗費更多的人力成本;商業軟體雖然不需要額外理解系統本身的運作原理,但是授權費用以及模組擴充上彈性較弱,免不了讓網管人員在使用上有種隔靴搔癢,無法一次滿足網管人員的所有需求。因此,唯有評估企業實際的狀況,選擇一套適合自己企業環境的網管軟體,才能真正有效的協助解決網路管理上的問題。


參考文件

1. Cacti 官方網站
2. MRTG 官方網站
3. RRDTool 官方網站
 
正在處理您的請求...