当前我监控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添加

下面是在web里配置trigger

图形显示为

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

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

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