目錄php
一、引語linux
二、使用自定義數據收集方法完成設備監控web
2.一、建立數據收集腳本sql
2.二、定義Data Input Methodsshell
2.三、定義Data Templatesvim
2.四、定義Data Sourcesbash
2.五、定義Graph Templates框架
2.六、設置Graph Managementtcp
三、總結ide
一、引語
在上一博文中大體介紹了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.一、建立數據收集腳本
接下來就編寫數據收集腳本,腳本內容以下:
[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.二、定義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.三、定義Data Templates
數據輸入方法設置好後,接下來須要設置的就是Data Templates,數據模板主要是定義cacti使用rrdtool工具來處理腳本收集數據時所要設置的一些參數,以下圖:點擊右下角的「Create」後,出現下圖:
2.四、定義Data Sources
數據源的定義就是把數據模板與Devices關聯起來的操做,而且指定腳本把數據收集後再通過數據模板中定義的各類參數對數據作聚合後的數據的保存位置。點擊控制檯的「Data Sources」,再點擊右上角的「Add」後,出現下圖:再點擊右下角的「Create」後,出現下圖:
2.五、定義Graph Templates
數據源是有了,cacti已經知道該用一個腳本去收集數據,並經過相應的聚合函數處理後放到一個指定的rrd文件中,但還不知道用這些數據怎樣繪圖,因此接下定義一個圖形模板。在控制檯點擊「Graph Tempaltes」,再點擊右上角的「Add」後,以下圖:其餘的都保持默認便可,但只是最後一項須要設備,以下圖:
最後點擊「Create」後,圖形的框架結構已造成了,能夠展開想象,在如今爲止,咱們就建立了一張高爲120,寬爲500的圖片,但圖片中所要繪製圖形的具體屬性尚未定義,好比所須要繪製的是線條圖,仍是區域圖,線條的走勢是表明每300的平均值仍是最大值等,這些都尚未定義,因此把圖形框架建立好後,還得點擊右上角的「Add」去定義,以下圖:
再點擊「Create」後就把所要繪製哪一種圖形的相應屬性也定義好了,點擊"Create"後返回以下頁面:
最後點擊頁面的最正文右下角的「Save」保存便可。最後的工做就是把圖形模板運用到Devices上。
2.六、設置Graph Management
Graph Management的設置就是具體把咱們定義的圖形模板運用到具體的設備上。在控制檯點擊「Graph Management」,再點擊右上角的「Add」後,以下圖:點擊「Create」後,以下圖:
如今就能夠去看一下nod2這設備上所畫的圖中是否有咱們本身定義的,點擊主頁面上的「graphs」,找到咱們監控的設備就能夠查看相應的圖片,以下圖:
如今只是尚未值而已,等一段時間後,就會在圖上產生一條紅色線條。若是在圖形下邊要顯示出最大值、當前值等信息,就像相似下邊圖形同樣:
咱們只須要回到圖形模板,再點擊右上角的「Add」,以下圖:
若是要顯示最大值,也像上邊操做同樣增長便可,最後增長好後以下圖:
最後不要忘記點擊右下角的「Save」,保存咱們作的修改,接下來再去查看一相圖形,以下圖:
三、總結
經過此次自定義數據收集方法來監控tcp鏈接中處理established狀態的數量後,你會對cacti有不同的認識,並且我還建議你去參考系統自帶圖形模板,看看別人是怎樣定義的,特別是一個圖上繪製多種線條時,只要你突破了此關,那cacti會成爲你工做中的好夥伴。