在某些情况下,一个主机的可用性可能依赖于另一个主机。例如,位于路由器后面的服务器,如果路由器宕机,该服务器也会变得不可达。如果为这两个设备都配置了触发器,你可能会收到两个主机都宕机的通知,而实际上问题仅出在路由器上。
在这种情况下,主机之间的某种依赖关系可能会很有用。通过设置依赖关系,可以抑制依赖主机的通知,只发送根问题的通知
然而,Zabbix 并不直接支持主机之间的依赖关系,但它们可以通过一个更灵活的方法-触发器依赖关系来定义。一个触发器可以有一个或多个它所依赖的触发器。
在我们的简单例子中,我们打开服务器的触发器配置表单,并设置它依赖于路由器的相应触发器。通过这种依赖关系,只要所依赖的触发器处于“问题”状态,服务器的触发器就不会改变其状态-因此不会执行任何依赖操作,也不会发送任何通知。
如果服务器和路由器都宕机,并且存在依赖关系,Zabbix 将不会为依赖的触发器(即服务器)执行任何操作。
当父触发器处于问题状态时,其依赖的触发器可能报告无法信任的值。因此,依赖的触发器不会在以下情况之前重新评估(以上述路由器为例): - 从“PROBLEM”状态返回到“OK”状态; - 从“PROBLEM”状态更改为“UNKNOWN”状态; - 被手动关闭,通过关联或借助基于时间的函数; - 通过与依赖触发器无关的项目值解决; - 被禁用,或者包含的项目被禁用,或者项目的主机被禁用。
在以上提到的所有情况下,依赖的触发器(服务器)只有在接收到新的度量指标时才会被重新评估。这意味着依赖的触发器可能不会立即更新。
此外:
要定义依赖关系,请在触发器配置表单中打开 '依赖关系'选项卡,点击 添加 ,然后选择该触发器将依赖的一个或多个触发器。
点击 更新.。现在,触发器在列表中显示了其依赖项的标识
例如,主机位于Router2后,Router2在Router1后面
当Router1中断,显然,主机和Router2会不可达,但收到关于Host、Router1和Router2全部宕机的三个通知是过多的。
因此,这种情况下,我们定义了两个依赖关系:
'Router2 is down' 触发器依赖于 'Router1 is down'触发器
在更改 'Host is down' 触发器状态之前, Zabbix将检查相应的触发器依赖项。如果找到了这样的依赖项,并且其中一个依赖的触发器处于'问题'状态,那么触发器的状态将不会被更改,相关的操作将不会被执行,并且不会发送任何通知。
Zabbix 会递归地执行此检查。如果 Router1 或 Router2 无法访问,则 Host 触发器的状态将不会被更新。