zabbix對一個服務進行監控,例如crond,zabbix自己沒有此模板,須要手動書寫腳本
場景介紹:
192.168.10.10: zabbix server
192.168.10.11: zabbix client
2:腳本內容以下:
[root@zabbiclient1 scripts]# pwd
/etc/zabbix/scripts
[root@zabbiclient1 scripts]# cat check_process_running
#!/bin/sh
###################################################
#
# check process runing status
#
###################################################
procjetName="${1:-NULL}"
LOCK_PATH="/var/lock/subsys"
RUN_PATH="/var/run"
ret_ok=1
ret_warn=2
ret_critical=3
ret_unknown=4
if [[ ${procjetName} == "NULL" ]] ; then
echo ${ret_unknown}
fi
if [ -f "${LOCK_PATH}/${procjetName}" ] || [ -f "${RUN_PATH}/${procjetName}.pid" ] ; then
echo ${ret_ok}
else
echo ${ret_critical}
fi
[root@zabbiclient1 zabbix_agentd.conf.d]# pwd
/etc/zabbix/zabbix_agentd.d
[root@zabbiclient1 zabbix_agentd.conf.d]# ll check_process.conf
-rw-r--r-- 1 root root 533 Dec 26 2013 check_process.conf
[root@zabbiclient1 zabbix_agentd.d]# cat check_process.conf
UserParameter=check.crontab,/etc/zabbix/scripts/check_process_running crond ##注意check.crontab必須和下面建立item時的key相對應
在zabbix client機器上include 相關文件,
[root@zabbiclient1 etc]# ls
zabbix_agent.conf zabbix_agent.conf.d zabbix_agentd.conf zabbix_agentd.conf.d
[root@zabbiclient1 etc]# cat zabbix_agentd.conf | grep -v "#" | grep -v "^$"
php
PidFile=/var/run/zabbix/zabbix_agentd.pidapp
LogFile=/var/log/zabbix/zabbix_agentd.logide
LogFileSize=0spa
Server=10.15.0.8orm
ServerActive=127.0.0.1server
Hostname=prod-public-ecs-aliyuncrontab
Include=/etc/zabbix/zabbix_agentd.d/ ###Include該文件!ip
3: 下面關鍵的重點是經過zabbix_get 獲取check.crontab key的值,這個值在建立trigger時時須要,不然
trigger表達式填寫不正確,就沒法觸發trigger
下面就建立一個模板,我建立的模板名爲apptemplate,在模板裏面建立一個item,crond is running,update interval 我設置爲5s,見附件
而後建立一個trigger,trigger名爲:crond does not work, 表達式值爲{apptemplate:check.crontab.last(0)}=3
Severity 選擇disaster,點save按鈕便可建立。見附件
4:而後就能夠在134機器上手動執行service crond stop,看看是否觸發trigger
get