zabbix搭建好後,除了呼叫預設的模板,還要監控其它常用的程序,有redis,rsync,nginx,gunicorn,mysql等等都要進行監控。
自定義監控的配置過程如下:
1、編寫程序監控指令碼,獲取監控項的具體值
2、在zabbix_agentd.conf檔案中定義userparameter
3、在介面配置item,通過鍵值來控制傳參
4、檢視監控資料情況
5、配置觸發器,用來報警
6、宕服務測試
對於zabbix的安裝與郵件報警設定,可參考兩篇文章。
zabbix監控之基於lnmp環境安裝
zabbix監控之同時向多人郵件報警
1、編寫程序監控指令碼,獲取監控項的具體值
程序監控指令碼構思:
根據名稱或埠號來判定該程式是否存在。
如果傳參包含埠號,則根據埠號判斷程序,有返回1,沒有返回0。
如果不包含埠號,根據程序名判斷程序,有返回1,沒有返回0。
注:所編寫的指令碼只需要輸出具體值即可,無須像nagios那樣返回退出值,描述資訊等。
[root@yang python]# catprocess_port.py
#!/usr/bin/python
#auth:yangrong
#function:check process_nameor check process_port
#date:2014-8-18
import os,sys,commands
def help():
print "usage: "
print " %s process_name [process_port]"%sys.argv[0]
print "example: "
print " %s mysql ;if the process_nameexists, output 1, otherwise 0"%sys.argv[0]
print " %s nginx 80 ;if the process_port exists, output 1,otherwise 0"%sys.argv[0]
print " %s mysql 3306 "%sys.argv[0]
def check_process_name():
process_num=commands.getstatusoutput("ps -ef|grep -v grep|grep -v%s|grep -v '\[%s\]'|grep %s|wc -l "%(sys.argv[0],sys.argv[1],sys.argv[1]))
#print process_num
if not process_num[1]:
print "0"
return
if int(process_num[1]) >= 1:
print "1"
else:
print "0"
def check_process_port():
process_num=commands.getstatusoutput("netstat -lnt|grep -v grep|grep ':%s '|wc -l"%sys.argv[2])
if int(process_num[1]) >=1:
print "1"
else:
print "0"
###start execute
if len(sys.argv) == 2:
check_process_name()
sys.exit()
elif len(sys.argv) == 3:
check_process_port()
sys.exit()
else:
help()
sys.exit()
2、在zabbix_agentd.conf檔案中定義userparameter
在zabbix agent端修改zabbix_agentd.conf檔案:
使用者引數=鍵值
[*],命令
echo 'userparameter =check_process[*],/usr/bin/python /python/process_port.py $1 $2 ' >>/usr/local/zabbix/etc/zabbix_agentd.conf #新增使用者引數
/etc/init.d/zabbix_agentdrestart #重啟zabbixagent服務
agent端本機測試:
在中括號中內容為傳參內容,如果要傳參多個,用逗號隔開,第乙個則是$1,第二個則是$2。
[root@yang python]#/usr/local/zabbix/sbin/zabbix_agentd -t check_process[hello]
check_process[hello] [t|0]
#返回結果為0,代表hello程序不存在。
[root@yang python]#/usr/local/zabbix/sbin/zabbix_agentd -t check_process[mysql]
check_process[mysql] [t|1]
#返回結果為1,代表mysql程序存在。
[root@yang python]#/usr/local/zabbix/sbin/zabbix_agentd -t check_process[mysql,3306]
check_process[mysql,3306] [t|1]
測試可用,接下來在主介面配置監控
3、在介面配置item,通過鍵值來控制傳參
【組態】
à【主機】
à【專案】
à【建立監控項】
此處鍵值的用法和zabbix_agentd.conf中定義的userparameter一致。
4、檢視監控資料情況
【監控中】
à【最新資料】
最新資料為1,監控正常。
5、配置觸發器,用來報警
【組態】
à【主機】
à【觸發器】
à【建立觸發器】
6、宕服務測試
在agent client端,宕掉mysql。郵箱1分鐘後收到報警。
成功收到報警郵件,自定義監控及報警配置完成。
Zabbix 自定義監控項
vi usr local zabbix etc zabbix agentd.conf unsafeuserparameters 1 userparameter check process,echo top b n 1 grep mysqld awk f server 192.168.1.12 然後r...
zabbix自定義監控項
1 自定義key 有時候我們想讓被監控端執行乙個zabbix沒有預定義的檢測,zabbix的使用者自定義引數功能提供了這個方法。我們可以在客戶端配置檔案zabbix angentd.conf裡面配置userparameter.語法如下 userparameter key,command 引數 描述 ...
zabbix 自定義監控項
對於zabbix提供的監控項可能有時無法滿足我們的監控需求,這時我們就可以提供zabbix提供的自定義監控項功能來實現,我這裡寫一些我自己在使用過程中遇到的問題。vim etc zabbix zabbix agentd.conf 該位置以自己安裝的為準,沒找到可用locate搜尋一下 unsafeu...