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