Cisco Router Ubuntu Cisco Cacti SNMP 繪圖

Cacti監控報表圖多不愁 批次抓取設備資料繪製

2017-02-15
在Cacti建立設備相關繪圖非常便利,但手動作業有點麻煩,且當大批設備有繪求需求時,將會應接不暇。本文嘗試以SNMP Query Index來建立設備記憶體使用量的繪圖,不必逐一建立,可減輕網管人員的工作負擔。
暫時不載入MIB檔,使其輸出OID。在此可以看出,Memory的種類可分為Processor和I/O,推測有兩個Index各為.1及.2。Processor與I/O即為其Description或Name,後面的數值就是針對.1及.2各細項的輸出,符合前述有Index、Input及Output的特性。看來以SNMP Query Index方式進行批次繪圖是可行的,如圖3所示。


▲圖3 不載入MIB檔,使其輸出OID。

載入MIB檔

搜尋及下載CISCO-MEMORY-POOL-MIB.my這個MIB檔,並上傳至Server上,接著將其複製到SNMP預設的「mib」目錄中:


此外,也需要SNMPv2-SMI.my和CISCO-SMI.my這兩個檔案,將之一併移入該目錄。

假設目前已在Linux上安裝snmp相關套件,接著編輯snmp的設定檔,該檔案為「/etc」目錄下「snmp」目錄中的snmp.conf:


先定義要搜尋mib檔的目錄,以減少其搜尋時間,在此新增mibdirs及其路徑:


接著在mibs欄位新增CISCO-MEMORY-POOL-MIB這個檔名(無須加上副檔名),其內容如下,並存檔:


設定完成後,使用snmpwalk指令進行測試,其輸出為可讀性較高的MIB,從中可以輕易看出其數值代表的意義,預計將使用Used和Free來進行批次繪圖功能的驗證。(若執行時有Cannot find module之類的提示,雖不影響操作,但建議將相關檔案補齊),其輸出如圖4所示。


▲圖4 使用snmpwalk指令進行測試,輸出可讀性較高的MIB。

最後登入Cisco Router,使用指令的方式取得其記憶體使用量,驗證與使用SNMP Query取得的數值是否相符,如圖5所示(兩者的數值可能會因時間差而有所不同)。


▲ 圖5 取得其記憶體使用量,驗證與使用SNMP Query取得的數值是否相符。

至此,確認可透過SNMP取得正確數值,接著編輯XML檔案,讓Cacti可取得Index、輸入及輸出的資訊。

撰寫XML檔

Cacti在Ubuntu預設安裝目錄為「/usr/share/cacti/site」,而使用SNMP進行SNMP Query Index處理的資料夾在「resource/snmp_queries」中。

一開始,先切換至該資料夾:


接著,建立名為cisco_memory.xml的檔案:


在此僅做最簡易的設定,詳細說明可參考網頁「http://www.cacti.net/downloads/docs/html/snmp_query_xml.html」的說明。

XML檔以做為開頭,檔案的結尾是。輸入後,依序加入各區段。先加入取得snmp index的區段,設定內容如下:


Name部分請自行規劃,易於識別即可,在此使用Get Cisco Router Memory Pool。index_order_type部分,使用數字做Index,因此使用numeric。

至於oid_index部分,由於Memory Pool Table的目標有Processor及I/O兩個,能夠取得這兩個名稱的OID就可以使用,在此OID使用的是.1.3.6.1.4.1.9.9.48.1.1.1.2,直接輸入即可。至此,設定檔如圖6所示。


▲圖6 設定檔案內容。

在填入Input及Output之前,必須先加入,在檔案最後的之前要加入。在field之間代表的是XML的輸入和輸出資訊。

接著,繼續在fields裡面新增Input的部分,要增加的是description,其目的是要讓管理者易於識別。同樣建立易於識別的名稱ciscoMemoryPoolName,名稱為「Description」,Method同樣為「walk」,Source取得的是「value」,以取得其字串,direction同樣為「input」,oid的部分則輸入實際可取得description的「.1.3.6.1.4.1.9.9.48.1.1.1.2」。設定內容如圖7所示(資料放在/fields標籤之前)。


▲圖7 放在/fields標籤之前的設定內容。

在處理Output之前,先針對Index部分做說明。理論上,Index也是一種Input,必須提供Index的對照供Cacti比對,例如在interface.xml檔案中有一段是Index的Input敘述,圖8僅供參考,請勿加入cisco_memory.xml中。


▲圖8 Index部分的設定。

它的用意是讓Cacti取得各Index的數值,例如F0/0的Index是.1,再用這個.1來取得其流量,例如ifHCInOctets.1就代表F0/0的Input流量。但並非所有數值均有提供Index作比對。例如,進行Memory Pool的查詢時,並沒有提供對應的Index,因此也無法針對該Index取出所想要的數值。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!