目錄
1、引語
2、使用自定義數據收集方法完成設備監控
2.1、創建數據收集腳本
2.2、定義Data Input Methods
2.3、定義Data Templates
2.4、定義Data Sources
2.5、定義Graph Templates
2.6、設置Graph Management
3、總結
1、引語
在上一博文中大致介紹了cacti的數據收集方法和模板的使用,還以一個例子介紹了怎樣導入一個主機模板,並讓此模板應用到一個指定的Devices上。此次博文在上一次博文的基礎上介紹以自定義腳本的方法收集數據、自定義數據模板、自定義數據源、自定義圖形模板,最後把這些應用到一個Devices上,實現繪圖。
當然,如果在cacti的論壇上能夠找到現成的模板,那當然好,直接導入到cacti就可以使用,但當你的需求沒有相應現成模板時,你就需要自己開發腳本來滿足的業務需求,用shell腳本來獲取主機的監控數據是比較常見的方法,而在shell中一般又是利用snmp的相應命令來獲取遠程主機的狀態數據的。下邊就以一個實際例子來說明這一過程,需求是監控一遠程主機上tcp連接中處於"established"狀態的數量,實驗環境還是基於上一博客的環境(http://zhaochj.blog.51cto.com/368705/1669081)
這裏還是簡單的說一下,nod1主機部署了cacti監控系統,nod2是被監控主機,安裝了snmp服務,允許nod1利用snmp的相關命令來獲取到狀態數據。
首先來驗證一下在nod1上是否能夠獲取到nod2上的狀態數據,如下:
[root@nod1 cacti]# snmpnetstat -v 2c -c public -Can -Cp tcp 192.168.0.202 Active Internet (tcp) Connections (including servers) Proto Local Address Remote Address (state) tcp *.22 *.* LISTEN tcp *.80 *.* LISTEN tcp *.8139 *.* LISTEN tcp 127.0.0.1.25 *.* LISTEN tcp 127.0.0.1.199 *.* LISTEN tcp 127.0.0.1.6010 *.* LISTEN tcp 127.0.0.1.6011 *.* LISTEN tcp 127.0.0.1.6012 *.* LISTEN tcp 192.168.0.202.22 192.168.0.102.51522 ESTABLISHED tcp 192.168.0.202.22 192.168.0.102.51545 ESTABLISHED tcp 192.168.0.202.22 192.168.0.102.51546 ESTABLISHED
上邊的命令執行成功了。接下來我們就可以把snmpnetstat這個命令封裝在一個shell腳本上去獲取到nod2的數據,在寫腳本前有一點需要說明,cacti利用腳本獲取的數據的輸出是有一定格式的,格式必須是“<fieldname_1>:<value_1> <fieldname_2>:<value_2> ... <fieldname_n>:<value_n>”,如果腳本收集數據的輸出格式不是這樣的,那cacti無法識別。這一部份的內部可以參考官方文檔“http://docs.cacti.net/manual:088:3a_advanced_topics.1_data_input_methods#data_input_methods”
2、使用自定義數據收集方法完成設備監控
2.1、創建數據收集腳本
接下來就編寫數據收集腳本,腳本內容如下:
[root@nod1 cacti]# vim tcpcon.sh #!/bin/bash # #$1: hostname or ip #$2: snmp community SNMPNETSTAT=/usr/bin/snmpnetstat ESTABLISHED=`$SNMPNETSTAT -v 2c -c $2 -Can -Cp tcp $1 | grep -i 'established' | wc -l` echo "established:$ESTABLISHED" [root@nod1 cacti]# bash tcpcon.sh 192.168.0.202 public #測試一下腳本是否能正常運行 established:3
把腳本複製到cacti專門存放腳本的路徑:
[root@nod1 cacti]# cp tcpcon.sh /web/vhosts/cacti/scripts/ [root@nod1 cacti]# ls /web/vhosts/cacti/scripts/ #此目錄就是腳本的存放目錄,看看此目錄下還有perl腳本,php腳本 3com_cable_modem.pl ping.pl ss_host_cpu.php unix_users.pl diskfree.pl query_host_cpu.php ss_host_disk.php weatherbug.pl diskfree.sh query_host_partitions.php ss_sql.php webhits.pl linux_memory.pl query_unix_partitions.pl tcpcon.sh loadavg_multi.pl sql.php unix_processes.pl loadavg.pl ss_fping.php unix_tcp_connections.pl
2.2、定義Data Input Methods
接下來打開cacti的控制檯,點擊“Data Input Methods”,再點擊右上角的“Add”,如下圖:
點擊“Add”按鍵後,爲Data Input Methods定義幾個屬性,如下圖:
點擊右下角的“Create”按鈕,會要求設定此腳本所需要輸入和輸出的字段,輸入字段表示腳本需要接收的參數是怎樣定義的,
輸出字段表示此腳本獲取到數據後輸出的數據是什麼,即是“fieldname:value”這樣的格式的輸出數據,如下圖:
點擊上圖中“Input Fields”中的“Add”,爲輸入字段設置數值,如下圖:
點擊上圖中右下角的“Create”就完成第一個參數的引用配置,點擊“Create”後界面返回到如下界面:
再點擊“Add”按鈕,再去增加“<community>”這個參數的一些定義,如下圖:
再點擊一下右下角的“Create”,就完成了腳本中兩個參數的一些設置,如下圖:
“Input Fields”設置完成後,還得設置腳本的輸出的一些設置,點擊上圖中的“Add”後,如下圖設置:
點擊右下角的“Create”後,那數據輸入方法算是定義完成,最終效果如下圖:
2.3、定義Data Templates
數據輸入方法設置好後,接下來需要設置的就是Data Templates,數據模板主要是定義cacti使用rrdtool工具來處理腳本收集數據時所要設置的一些參數,如下圖:點擊右下角的“Create”後,出現下圖:
2.4、定義Data Sources
數據源的定義就是把數據模板與Devices關聯起來的操作,並且指定腳本把數據收集後再經過數據模板中定義的各種參數對數據做聚合後的數據的保存位置。點擊控制檯的“Data Sources”,再點擊右上角的“Add”後,出現下圖:再點擊右下角的“Create”後,出現下圖:
2.5、定義Graph Templates
數據源是有了,cacti已經知道該用一個腳本去收集數據,並通過相應的聚合函數處理後放到一個指定的rrd文件中,但還不知道用這些數據怎樣繪圖,所以接下定義一個圖形模板。在控制檯點擊“Graph Tempaltes”,再點擊右上角的“Add”後,如下圖:其他的都保持默認即可,但只是最後一項需要設備,如下圖:
最後點擊“Create”後,圖形的框架結構已形成了,可以展開想象,在現在爲止,我們就創建了一張高爲120,寬爲500的圖片,但圖片中所要繪製圖形的具體屬性還沒有定義,比如所需要繪製的是線條圖,還是區域圖,線條的走勢是代表每300的平均值還是最大值等,這些都還沒有定義,所以把圖形框架創建好後,還得點擊右上角的“Add”去定義,如下圖:
再點擊“Create”後就把所要繪製哪種圖形的相應屬性也定義好了,點擊"Create"後返回如下頁面:
最後點擊頁面的最正文右下角的“Save”保存即可。最後的工作就是把圖形模板運用到Devices上。
2.6、設置Graph Management
Graph Management的設置就是具體把我們定義的圖形模板運用到具體的設備上。在控制檯點擊“Graph Management”,再點擊右上角的“Add”後,如下圖:點擊“Create”後,如下圖:
現在就可以去看一下nod2這設備上所畫的圖中是否有我們自己定義的,點擊主頁面上的“graphs”,找到我們監控的設備就可以查看相應的圖片,如下圖:
現在只是還沒有值而已,等一段時間後,就會在圖上產生一條紅色線條。如果在圖形下邊要顯示出最大值、當前值等信息,就像類似下邊圖形一樣:
我們只需要回到圖形模板,再點擊右上角的“Add”,如下圖:
如果要顯示最大值,也像上邊操作一樣增加即可,最後增加好後如下圖:
最後不要忘記點擊右下角的“Save”,保存我們做的修改,接下來再去查看一相圖形,如下圖:
3、總結
通過這次自定義數據收集方法來監控tcp連接中處理established狀態的數量後,你會對cacti有不一樣的認識,而且我還建議你去參考系統自帶圖形模板,看看別人是怎樣定義的,特別是一個圖上繪製多種線條時,只要你突破了此關,那cacti會成爲你工作中的好夥伴。