cacti自定義數據收集腳本,創建Data Templates和Graph Templates

參考這篇文章 http://www.mamicode.com/info-detail-187799.html

還有馬哥的linux視頻。


 cacti使用思路:


cacti自定義監控腳本進行監控的具體流程如下:


  1. 自定義數據收集方法,在Collection Methods下有2項,Data Queries(xml方法)和Data Input Methods (scripts, command方法)

  2. 數據收集了如何保存呢?數據模板Data Templates。數據模板定義了:怎麼通過數據收集方法獲取數據,獲取的數據如何保存,以及保存在什麼地方。(也就是調用rrdtool create , rrdtool update)

  3. 把數據模板應用到特定的device上,就會創建數據源

  4. 有了數據源,那麼就可以繪圖Graph了。圖形模板或者自定義,應用到相應的數據源上。(rrdtool graph)


實例說明:創建一個監控tcp 連接ESTABLISHED,SYN,TIMEWAIT 數目的繪圖


一、創建採集數據腳本


    poller.php 是cacti的輪詢器,用來收集數據,所以創建crond任務讓他每5分鐘執行一次。cacti/scripts 目錄下放的是cacti自定義Data Input Methods的腳本文件。

    我們在cacti/scripts 下創建一個 tcp_conns.sh 的腳本,記得chmod +x ,內容如下:

#!/bin/bash
#
# $1:hostname or IP
# $2:snmp community
SNMPNETSTAT=/usr/bin/snmpnetstat
TEMPFILE=`mktemp /tmp/$1_tcp_conns.XXXXXX`
$SNMPNETSTAT -v 2c -c $2 -Can -Cp tcp $1 > $TEMPFILE
ESTABLISHED=`grep -i "established" $TEMPFILE | wc -l`
TIMEWAIT=`grep -i "TIMEWAIT" $TEMPFILE | wc -l`
SYNRECEIVED=`grep -i "SYNRECEIVED" $TEMPFILE | wc -l`
echo -n "ESTABLISHED_NUM:$ESTABLISHED TIMEWAIT:$TIMEWAIT SYN_received:$SYNRECEIVED"


二、在cacti上添加數據方法


1、創建自定義方法。

    Collection Methods ---> Data Input Methods ---> 右上角add,填入數據後點擊create。

wKiom1T9MqeQGcS0AAGwKBPGOgs128.jpg

    Name項:填入自己定義的名字

    Input Type:選擇用什麼方式獲取數據,因爲我們是script方式,所以選擇 Script/command

    Input String:腳本怎樣運行,後面的2個參數,<hostname> <snmp-community> 是需要傳遞給腳本的變量,接着下面可以定義傳遞的數據。


2、定義需要傳遞給自定義腳本的變量以及自定義方法所產生的數據

wKiom1T9NC2QXZ-RAAFHLpRb8eE871.jpg

a、添加傳遞給自定義腳本的變量。

    點擊Input Fields 右邊的Add開始添加,點擊create完成,因爲我們有2個需要傳遞的變量hostname和snmp community ,所以完成一個後還需要再add一個,第二個過程略。

wKioL1T9Ne2RPBikAAKTwkNoiSY054.jpg

  • Field[Input] 第一項:就是剛剛自定義的2個需要獲取數據的變量的第一個

  • Friendly Name:便於識別的名字,任意填寫。

  • Special Type Code:具體說明如下:

        我們看到,cacti已經定義了許多Speial Type Code。它們類似於宏,我們能夠繼承它並能夠取得相應device相關的信息。我們知道圖形和數據收集方法都必須關聯到特定的device上,在定義device時,就會指定其hostname等相關信息。如果我們沒有提供輸入的參數,就讓它自動去繼承device的那些宏。如果使用hostname,那麼此腳本應用到哪個設備上,就會獲得那個設備的hostname。如果snmp_community,那麼就會自動引用我們在添加設備時,指定的那個community。

        比如,我在定義device時,填入的信息如下,那麼,此時的Special Type Code: hostname==127.0.0.1, snmp_community==public

bubuko.com,布布扣

b、定義Output Fields,腳本輸出的數據。

    我們的腳本tcp_conns.sh 正常運行會輸出3個數據,注意格式,中間只有一個空格:

    ESTABLISHED_NUM:2 TIMEWAIT:0 SYN_received:0

    此時需要一個一個根據輸出的名字來定義,如下圖:

wKioL1T9OLrTJZTBAAFhphTc3I4624.jpg    Field[Output]內填入腳本產生的數據名


c、定義好傳遞的數據與產生的數據如下:

wKiom1T9OBHAkPO5AAOoWKQyIi8369.jpgPS:這樣就完成了思路里的第一步。


二、定義數據模板,Data Templates


1、創建數據模版,Data Templates  ——>右上角 Add開始創建模版,模版完成點Save

wKiom1T9O3bxKMR5AAYtBBPj-rM535.jpg創建好了如下圖,選擇Output Field時,記得Internal Data Source Name對應上:

wKiom1T9O6qR_9HqAALfs_tQRJk368.jpg


三、把數據模板應用到指定device,應用後會自動創建rrd文件。


PS:創建device的過程,略。


 1、   Data Sources ———>> Add ———— >> Create

wKioL1T9Pf7Qf4zbAAEhRZx_byE543.jpgselected Data Template :選擇剛剛定義的數據模板

host:選擇要應用到那臺主機。


2、    可以點開創建好的DS進行修改,如下圖:

wKiom1T9PcvDXs0zAAPe9MVD3DA988.jpg


四、添加Graph Templates 圖形模版


1、創建圖形模版,Graph Templates ——>> add ————>> Name ,title 自己定義,點擊create後

wKioL1T9QJ-DR69wAAK-c78AHgQ718.jpg

2、創建繪圖的Item

a、點擊Graph Template Items 右側的Add,添加條目:

    可以看到此時的Data Source 裏面會多出我們剛剛定義的數據源,選擇就可以。wKiom1T9QSGCAMXjAARrdxy6-YA345.jpg   選擇好後如下圖說明:

wKiom1T9QXnCTFrmAAPd954fboo706.jpgb、把3個數據都填好後如下圖。

wKiom1T9Qjfj8X5fAAM-SgR7RnU645.jpg這樣就創建好了Graph Templates


五、把圖形模版關聯到相關device


1、點擊Graph Management  右邊的Add,選擇剛剛定義的Graph Template到Host 上。

wKiom1T9QwDgI9KCAAFi4_Bk0mk560.jpg

2、選擇Graph Templates Data裏的DS,剛剛都定義好了,如下圖。

wKiom1T9Q3qQqUebAAL3gQKh4kI855.jpg

最後記得添加到Graph Trees上,終於完成了!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章