歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> cacti安裝記錄 第四階段cacti的基本使用(6)自定義模板的制作

cacti安裝記錄 第四階段cacti的基本使用(6)自定義模板的制作

日期:2017/3/1 11:52:38   编辑:關於Linux

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

\

過一會兒。。


Copyright © Linux教程網 All Rights Reserved