cacti的有許多數據模板,可以滿足大多數需求。
但是如果有比較特殊的要求,就只能自己定制了。
模板的定制首先要明確一個概念,模板是否成功,在於圖表是否顯示正常,圖表是否顯示正常在於數據是否正確。所以歸根到底核心問題首先是得到數據。
關於得到數據,有兩種方式。
A.用腳本,這種比較自由。但是要求腳本編寫的功底。不是很通用;
B.用snmp的OID,這個是基於snmp提供的OID來獲取數據,也可以為自己編寫的確腳本賦予OID。這個要對snmp進行設置,但數據獲得相對明確,而且通用性比較高。
嚴格來說,這一篇只能算是對各前輩文章的再述和實驗算不得原創,但我打算寫一點我自己的感想,希望各位——也包括多年後的我,在看完之後能得到比原創更多的東西。
A.用腳本取得監控數據
首先要寫一個腳本。
# vim only.sh
#!/bin/bash
echo $RANDOM
輸出一個隨機數,給它755權限之後,放到./cacti/scrpts/下面
# chmod 755 only.sh
# cp only.sh /var/www/html/cacti/scripts/
(這篇的環境和之前的不一樣了,但基礎配置是一樣的,所以路徑什麼不要一概而論)
好了。轉到cacti界面。
選擇“Collection Methods”——》“Data Input Methods”,然後點擊右上角的“add”
Data Input Mothods的錄入
大概說明一下,Name是數據錄入方法的名稱,這個隨便寫;Input Type,這個是cacti采取數據的方式,因為是腳本,所以這裡選的是“Script/Command”;Input String,這個是腳本執行的過程,即腳本執行命令,sh改成/bin/bash也行,只要能執行。
一切OK之後,右下角“Create”。
“Create”之後,會出來這兩項。“Input Fields”是腳本運行時要輸入的參數,我們這個腳本沒有輸入參數,所以不管它;“Output Fields”是腳本運行輸出的數據,我們要得到的就是這個,所以點擊右上角“add”
輸出字段的定義。這裡要說明一下:
Field,這個是cacti對這個輸出字段調用時的標識符,說白了就是這個輸出字段的名稱。
Friendly Name,這個其實是針對Field的補充說明,讓人知道這個字段輸出的具體是什麼。
Update RRD File,這個是否更新RRD文件,這個不勾,最後的圖上可能沒有點。
一切OK。就點擊右下的“save”
出去之後是“Data Input Methods”,別忘了再save一次。
下面,生成數據模板。
選擇左面“Templates”——》“Data Templates”,點擊右上角的“add”
數據源添加頁面:
“Data Templates”
Name,數據模板名稱
“Data Source”
Name,數據源名稱
Data Input Method,選擇我們剛剛錄入的數據錄入方法RANDOM。特別說明一下,如果這裡為空,那麼最後rra文件將無法生成,也自然就沒有圖形。
“Data Source Item”
Internal Data Source Name,這個是cacti內部調用數據源時使用的名稱標識,只能用字母和_。
Minimum value 和 Maximum value,默認是0,使用U是依實際為主,不設圖形最大值。
Save完之後,可以看到
這裡“Output field”已經自動識別了,我們這裡只輸出一個,但如果有多個輸出請選擇自己實際要的那個。然後再“save”,這裡搞定。下一步,生成圖形模板。
生成圖形模板。
點擊左側“Templates”——》“Graph Templates”,然後點擊右上角的“Add”
這裡分成兩段設置
第一,設置圖形模板的名稱和圖形Title
“Template”Name,是圖形模板的名稱。
“Craph Template”Title,是顯示在圖形模板上的標題。
設置好之後直接“save”
添加完成之後,在“Template”上層多了兩個選擇,開始添加圖形相關項目,選擇右上的“Add”
圖形項目,其實就是把數據源加到圖形並顯示的過程。基本流程是:先把數據源添加到圖形並設置數據基本的圖形表現類型,然後針對相關數據進行統計。這兩者的圖形項目添加,有小小的不同。
數據源添加到圖形並設置數據基本的圖形表現類型:
關鍵在於“Graph Item Type”和“Consolidation Function”。“Graph Item Type”其實是選擇選擇具體的圖形框架;“Consolidation Function”這項選擇AVERAGE。
點擊右下角的“Create”之後,可以明顯的看出,數據源已經被添加到圖形模板中,數據基本的圖表類型為LINE1
現在點擊右上角“Add”把要統計的數據添加進圖形模板
以統計數據類型“MAX”為例。
“Graph Item Type”的類型必然是“GPRINT”
“Consolidation Function”這個根據實際選擇。
“Text Format”這個是顯示在圖形上的標簽。
“Create”之後,是這樣的。
最後我添加了四個統計數據,最後是這樣的:
添加方式都一樣,請注意一下不同點。
之後拉到最下(現在還在添加“圖形模板”不是把“圖形項目”添加就了事的)進行“save”
下一步,應用 圖形模板,生成圖形,開始監控數據。
這裡有兩種方法。1:直接放到默認樹圖,2:添加到本機圖形。
添加到本機圖形比較簡單,先說這個。
從左邊“Management”——》“Devices”,選擇“Localhost”(這是個在本機的單一腳本只能添加到localhost,如果腳本是所有機器通用那無所謂添加到哪個機器)
拉到最下面,選擇我們剛剛新建的圖形模板“隨機數圖形模板”,進行“Add”添加
然後拉到最上面,選擇“Create Graphs for this Hostt”添加新圖表
勾選之後,右下角“Create”
轉到圖相區,幾分鐘之後就有圖形出現了
最下面這行,就是在圖形模板裡添加的標簽。
不過由於title不支持中文,所以圖行標簽沒有顯示,現在改回來。
再刷新一下圖形,標簽就出來了。
直接放到默認樹圖
從左邊“Management”——》“Graph Management”,直接右上角“Add”
然後選擇圖形模板,不要選擇HOST,然後“Create”
添加出來是沒有圖的,要選擇數據源才行。SO,現在轉過去添加數據源。
從左邊“Management”——》“Data Sources”,Host選擇“None”,點擊右上角“Add”
選擇相應的數據模板,點擊右下角“Create”
可以看到模板文件已經生成了,直接右下角“save”
從左邊“Management”——》“Graph Management”,然後直接選擇圖形Random
選擇剛剛新建的數據源,記住是“NO Host”打頭,然後Save
再點進去
圖形就有了。
下一步,把這圖形添加到默認樹
從左邊“Management”——》“Graph Trees”,選擇“Default Tree”
直接選擇右上角“Add”
選擇添加圖形。
“Tree Item Type”,選擇“Graph”,(Header是子目錄,HOST是新主機)
“Graph”選擇要添加的圖形模板。(這裡很好認,沒有HOST頭的就是)
然後轉到圖形查看
已經有了。
B.用snmp的OID來獲取數據
恩,既然都說OID了,那這種方法最核心的問題就是要取相關的OID碼。OID碼是snmp服務直接讀取服務器數據的數據編碼。Snmp服務內置了一部分OID碼,如上(http://www.cnblogs.com/aspx-net/p/3554044.html)這部分OID碼基本是通用的,此外還可以自己定義OID直接讀取腳本輸出結果,注意自己定義的OID碼,不能占用snmp內置已經存在的。
說些題外話,網上資料很多,我一開始百試不得其解。後來發現,其實是對snmp並不了解。
恩,總的來說。得益於這篇文章:
http://wenku.baidu.com/link?url=QQYmYKElcII-2_mpN92yR4Vc9DeysSxPsCPjU3qm-U8aggYdhOwpIfgxKKZa2e397xVOmKo1NsddWStiTrjKKM6nEJsRkpJRvaEbCFQZwES
在snmp的配置文件/etc/snmp/snmpd.conf中有一個分段,是專門介紹利用腳本自定義OID的,叫Executables/scripts。但可惜的是,這個分段很長,而且是全注釋狀態,很容易讓人忽略掉。而一般情況下,沒有注釋的是以pass開頭的,類似這樣的:
pass .1.3.6.1.4.1.4413.4.1 /usr/bin/ucd5820stat
再看一下上面被注釋掉的例子:
exec .1.3.6.1.4.1.2021.50 shelltest /bin/sh /tmp/shtest
可以很明顯的發現,下面的OID友比上面少了一位,即是說,按沒注釋的那條來配置是怎麼都不會成功的。
廢話,不多說了。開始吧。
被監控機:(如果只有一台機,也可以自己監控自己)
把之前的那個腳本,在被監控機再寫一次。
# vim only.sh
#!/bin/bash
echo $RANDOM
改權限:
# chmod 755 only.sh
放到一個文件夾
# cp only.sh /temp.sh/
然後編輯 /etc/snmp/snmpd.conf
添加如下的條目
exec .1.3.6.1.4.1.200.11 test /temp.sh/only.sh
說明一下:
exec 是執行命令
.1.3.6.1.4.1.200.11 這一段是自定義的OID碼,但記住是八位。
test 這個其實只是說明標簽或者說名稱之類的,總之就是讓你知道腳本是干什麼的,隨意寫。
/temp.sh/only.sh 腳本路徑
重啟snmp服務
#service snmpd restart
OID碼可以自己隨意寫,但在這之前需要測試一下是否已被占用
例:
#snmpwalk -v 2c -c public 127.0.01 OID碼
如果如下所示表示可以使用
例
# snmpwalk -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.200.100
SNMPv2-SMI::enterprises.200.100 = No Such Object available on this agent at this OID
如果如下所示表示已經被占用了
# snmpwalk -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.200.11
SNMPv2-SMI::enterprises.200.11.1.1 = INTEGER: 1
SNMPv2-SMI::enterprises.200.11.2.1 = STRING: "test"
SNMPv2-SMI::enterprises.200.11.3.1 = STRING: "/temp.sh/only.sh"
SNMPv2-SMI::enterprises.200.11.100.1 = INTEGER: 0
SNMPv2-SMI::enterprises.200.11.101.1 = STRING: "18985"
SNMPv2-SMI::enterprises.200.11.102.1 = INTEGER: 0
SNMPv2-SMI::enterprises.200.11.103.1 = ""
(被監控機的其它設置請查看 添加監控機那篇)
之後可以轉到監控機上,測試OID碼是否能夠應用。
# snmpwalk -c public -v 2c 被監控機IP .1.3.6.1.4.1.200.11
SNMPv2-SMI::enterprises.200.11.1.1 = INTEGER: 1
SNMPv2-SMI::enterprises.200.11.2.1 = STRING: "test"
SNMPv2-SMI::enterprises.200.11.3.1 = STRING: "/temp.sh/only.sh"
SNMPv2-SMI::enterprises.200.11.100.1 = INTEGER: 0
SNMPv2-SMI::enterprises.200.11.101.1 = STRING: "24147"
SNMPv2-SMI::enterprises.200.11.102.1 = INTEGER: 0
SNMPv2-SMI::enterprises.200.11.103.1 = ""
OK,可以了。現在從這組數據中找到我們所需要的數據:
SNMPv2-SMI::enterprises.200.11.101.1 = STRING: "24147"
很明顯,就是這一行。
OK,那麼我們實際所需的OID碼就是:
.1.3.6.1.4.1.200.11.101.1
恩。自己比對一下有什麼不同
這是最初的:.1.3.6.1.4.1.200.11
這是結果行: .200.11.101.1
這是最後結果:.1.3.6.1.4.1.200.11.101.1
很明顯了吧。
現在,我們可以操作cacti了。
這裡說明一下,腳本進行數據采集的話,第一步是要添加數據輸入方式,但用OID方式數據輸入方式其實已被OID碼代替,所以可以直接添加數據模板。
從左邊選擇“Templates”——》“Data Templates”,點擊右上角“Add”
恩,數據模板的添加與腳本方式不同,“Data Inpu Method”選擇“Get SNMP Data”,右下角“Create”
現在OID屬性出來了,把上面的OID填進去吧,右下角“Save”
OK.下一步添加圖形模板
左側點擊“Templates”——》“Graph Templates”,右上角“Add”
恩,如下,可以“Create”
好了。點右上角“Add”開始添加圖形項目:數據源和數據統計
添加數據源:
恩,數據源已經添加,再次點擊右上角“Add”開始添加數據統計
恩,這是第一個統計數據,平均數。
點擊“Add”,按上面的方法依次添加“MAX,MIN,LAST”
最後結果
好了。記得點擊圖形模板右下角的“Save”直接保存。
恩,最後一步,添加到主機直接監控。
點擊左邊“Management”——》“Devices”,選擇目標主機
拉到“Associated Graph Templates”,選擇要添加的圖形模板,“Add”
拉到最上方,點擊“Create Graphs for this Host”開始添加圖形
在要添加的圖形後打勾,
然後拉到最下方,“create”。
OK,可以去graphs查看圖形了。
如果沒圖,別忘記在監控機打一下命令
#/usr/bin/php /var/www/html/cacti/poller.php --force
過一會兒。。