概述
zabbix触发器可以设置依赖性,例如我配置了两个触发器,一个触发器定义www.ttlsa.com这个HOST是否在运行中,另一个是www.ttlsa.com的网络是否通畅。
假如网络出现故障,但是ttlsa服务器并未出现故障,我们依旧会收到这两个触发器给到的故障通知。
现在的问题很明显,HOST是正常的,肯定不希望收到他的故障信息,因为它正常工作。所以在配置HOST触发器时,我们需要增加依赖关系,依赖网络是否畅通这个触发器。一旦网络出现故障,将不会出发HOST故障的通知。单个触发器可以依赖于多个触发器。
触发器依赖要点
· 一台HOST的触发器可以依赖其他HOST的触发器,但是注意不要有死循环依赖。比如A依赖B,B依赖C,C又依赖A。一个圆圈,没完没了, 会报错。
· 一个模板的触发器可以依赖另外一个模板的触发器,例如模板A触发器依赖模板B触发器。一个HOST要链接A模板,那么它同时要链接B模板(因为模板A中的触发器依赖了模板B中的触发器),但是HOST可以单独链接模板B(B是被依赖)。在一个host单独链接template A,结果出现错误,所以别忘记了一起把template B也链接到HOST中。
· 模板中的触发器可以依赖HOST中的触发器。如果某个HOST链接这类模板,那么HOST创建的相应的触发器也同样会依赖那个HOST的触发器。举个官方的例子,某个模板中的一些触发器依赖了route/主机的触发器,凡事链接(理解为套用)了这个模板的机器都会依赖这些router/主机。说了那么多,其实就是继承了。
· HOST中的触发器不能依赖模板中的触发器。
配置
编辑触发器,选择选项卡“dependencies”,点击Add,选择你需要依赖的触发器,如下图:
然后点击保存,可以看到触发器多了一个depend on
多个依赖实例
借用官方文档的示例,Host前面有个Router2,Router2前面有Router1,如下:
1
|
Zabbix - Router1 - Router2 - Host
|
如果Router1挂了,很明显Router2和Host连不上,我们不希望收到关于连不上Router2和HOST的通知,因此,我们定义了如下依赖关系:
1
2
|
'Host is down' trigger depends on 'Router2 is down'
trigger'Router2 is down' trigger depends on 'Router1 is down' trigger
|
在触发器将Host的状态改变为'Host is down'之前,它会检查host相关的依赖,这时候如果发现它依赖的触发器只要出现一个problem状态,那么当前触发器状态不会变化,这样一来action不会执行,报警通知sms/email自然也不会发送了。
zabbix会递归执行检测,如果router1或者router2有一个出现连不上,那么Host的触发器不会有任何的改变。