參考這篇文章 http://www.mamicode.com/info-detail-187799.html
還有馬哥的linux視頻。
cacti使用思路:
cacti自定義監控腳本進行監控的具體流程如下:
自定義數據收集方法,在Collection Methods下有2項,Data Queries(xml方法)和Data Input Methods (scripts, command方法)
數據收集了如何保存呢?數據模板Data Templates。數據模板定義了:怎麼通過數據收集方法獲取數據,獲取的數據如何保存,以及保存在什麼地方。(也就是調用rrdtool create , rrdtool update)
把數據模板應用到特定的device上,就會創建數據源。
有了數據源,那麼就可以繪圖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。
Name項:填入自己定義的名字
Input Type:選擇用什麼方式獲取數據,因爲我們是script方式,所以選擇 Script/command
Input String:腳本怎樣運行,後面的2個參數,<hostname> <snmp-community> 是需要傳遞給腳本的變量,接着下面可以定義傳遞的數據。
2、定義需要傳遞給自定義腳本的變量以及自定義方法所產生的數據
a、添加傳遞給自定義腳本的變量。
點擊Input Fields 右邊的Add開始添加,點擊create完成,因爲我們有2個需要傳遞的變量hostname和snmp community ,所以完成一個後還需要再add一個,第二個過程略。
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
b、定義Output Fields,腳本輸出的數據。
我們的腳本tcp_conns.sh 正常運行會輸出3個數據,注意格式,中間只有一個空格:
ESTABLISHED_NUM:2 TIMEWAIT:0 SYN_received:0
此時需要一個一個根據輸出的名字來定義,如下圖:
Field[Output]內填入腳本產生的數據名
c、定義好傳遞的數據與產生的數據如下:
二、定義數據模板,Data Templates
1、創建數據模版,Data Templates ——>右上角 Add開始創建模版,模版完成點Save
創建好了如下圖,選擇Output Field時,記得Internal Data Source Name對應上:
三、把數據模板應用到指定device,應用後會自動創建rrd文件。
PS:創建device的過程,略。
1、 Data Sources ———>> Add ———— >> Create
selected Data Template :選擇剛剛定義的數據模板
host:選擇要應用到那臺主機。
2、 可以點開創建好的DS進行修改,如下圖:
四、添加Graph Templates 圖形模版
1、創建圖形模版,Graph Templates ——>> add ————>> Name ,title 自己定義,點擊create後
2、創建繪圖的Item
a、點擊Graph Template Items 右側的Add,添加條目:
可以看到此時的Data Source 裏面會多出我們剛剛定義的數據源,選擇就可以。 選擇好後如下圖說明:
五、把圖形模版關聯到相關device
1、點擊Graph Management 右邊的Add,選擇剛剛定義的Graph Template到Host 上。
2、選擇Graph Templates Data裏的DS,剛剛都定義好了,如下圖。
最後記得添加到Graph Trees上,終於完成了!