如果小伙伴们在认真跟着大叔配置zabbix的话,相信你现在已经至少配置好了自己的邮件报警了。可是你可能正在和我一样陷入到一个新的烦恼之中,那就是zabbix 邮件轰炸机(呵呵,暂时这么叫吧)。究其原因就是前面我带大家设置触发器动作的时候,一是使用了默认的触发器,有些触发条件是持续性的,比如客户机关机了。二是触发器动作步骤持续时间使用了默认时间。

在实际的应用中,我们可能希望报警通知只要通知到我们一次或者有限次数就可以了,比如我们监控某几台重要的主机,如果这些主机不在线了就发一个通知给我们。可是触发器动作的原理就是只要达到触发阀值就会触发,建立在触发器之上的动作也会响应,触发条件没被改变之前它就会不停的给你发通知。

我们还是来看一个真实的例子吧。

1.创建一个监控主机重启的动作

动作的触发器选择主机上的{HOST.NAME} has been restarted (uptime < 10m).

zabbix有问题不报警 zabbix报警机制_linux


默认操作步骤持续时间这里我填写3分钟。为了减少给用户发邮件通知次数这里我只给操作这一个步骤指定了发送邮件的操作。

zabbix有问题不报警 zabbix报警机制_zabbix_02


步骤1-1的意思是触发器触发后立即响应动作,步骤持续时间’0‘,使用默认的步骤持续时间。

zabbix有问题不报警 zabbix报警机制_运维_03


完成上述配置之后,我们重启一下客户机,结果就出现了下面这一幕。

zabbix有问题不报警 zabbix报警机制_服务器_04


这种结果,我想并不是我们想要的,那么怎么改进呢?

2.通过更改操作步骤持续时间实现报警只通知一次

通过上面的图我们不难发现,重复报警的原因就是系统重启后10分钟之内都满足触发器触发条件,而我们设置的操作步骤持续时间小于10分钟,这就是重复发送通知的原因。

接下来我们修改默认操作步骤持续时间为15分钟。

zabbix有问题不报警 zabbix报警机制_zabbix_05


修改步骤持续时间为15分钟。

zabbix有问题不报警 zabbix报警机制_运维_06


📔 s 代表秒,m 代表分钟,h 代表小时,d 代表天。

修改完成后,我们再次重启客户机。

zabbix有问题不报警 zabbix报警机制_服务器_07


zabbix有问题不报警 zabbix报警机制_运维_08


十分钟后,触发器状态变为OK,所以状态自动变成已解决

zabbix有问题不报警 zabbix报警机制_linux_09


针对上述触发器,如果我们一直不处理问题会发生什么状况呢?

分钟 后,触发器状态变为OK,如果你设置了已恢复动作通知,就会收到故障已恢复的邮件了。

zabbix有问题不报警 zabbix报警机制_zabbix有问题不报警_10


📔 如果大家想得到我标题中所声称的“报警一次”的话,有两个必须条件,一是处理报警问题时如果问题没有真正得到处理,不要强行点击“关闭问题”,如果点击了“关闭问题”而触发条件还满足会触发成新的问题,这也是多次收到报警通知的根本原因。二是在报警媒介及报警动作中只设置发生问题时报警,恢复问题和更新问题都不报警就可以了。