当前我监控1000+的服务器,动作有近200个,监控方式有短信、邮件与语音报警电话,如果动作配置有问题或者某个动作被关闭,就会导致某些报警无法触发,不能及时收到报警通知并处理。而且zabbix配置用户权限的时候,如果给某些用户部门管理员的话,他就可以自己修改动作,比如关闭,然后业务出现问题无法报警,虽然可以从zabbix审计里查看(我测试了,很多情况下用户自己关闭动作,审计是看不到的),但扯皮是浪费时间的。

所以我自己写了一个程序判断当前动态是否有被关闭,如果有关闭就使用zabbix通知。

下面是程序代码

[root@puppet bin]# cat check_zabbix_action_status.sh
#!/bin/bash
#this script is check zabbix action status
ip='localhost'
user='zabbix'
pwd='zabbix'
database="zabbix"
port="3306"
mysql_cmd="select count(*) from actions where status=1;"
check_result=`/usr/bin/mysql -h$ip -u$user -p$pwd -P$port $database -Bse "$mysql_cmd"`
echo  $check_result

这个脚本就是登陆mysql服务器,查看是否有状态为1(关闭)的,然后打印结果。

下面是在zabbix_agentd.conf里配置

[root@puppet bin]# grep action /usr/local/zabbix/conf/zabbix_agentd.conf
UserParameter=check_zabbix_action_status,sudo /usr/local/zabbix/bin/check_zabbix_action_status.sh

下面是在web里进行item添加

zabbix企业应用之监控动作是否有被关闭_第1张图片

下面是在web里配置trigger

zabbix企业应用之监控动作是否有被关闭_第2张图片

图形显示为

zabbix企业应用之监控动作是否有被关闭_第3张图片

其中0是当前没有关闭状态的动作,1就是有关闭状态的动作。

下面是出现报警时候的显示内容

wKioL1Xv5fmyco0LAAHC7s6c6ZQ503.jpg

报警基本是一般报警,就是使用短信通知。有需求的可以参考这个来定制。