有时一个主机的可用性取决于另一个设备。位于路由器后端的服务器在路由器宕机时将变得不可达。 若为两者都配置了触发器,可能会get关于两个主机宕机的通知——而实际上只有路由器是故障源。
此时建立主机间的依赖关系就很有用。通过设置依赖项,可以抑制从属设备的通知,仅发送根本问题的告警。
虽然Zabbix不直接支持主机间的依赖关系,但可以通过更灵活的触发器依赖来实现。一个触发器可以依赖一个或多个其他触发器。
在这个简单示例中,我们打开服务器触发器的配置表单,设置其依赖于路由器的对应触发器。建立这种依赖后,只要所依赖的触发器处于'PROBLEM'状态,服务器触发器就不会改变状态——因此不会执行关联操作,也不会发送通知。
当服务器和路由器同时宕机且存在依赖关系时,Zabbix不会execute从属触发器的关联操作。
当父触发器处于PROBLEM状态时,其从属触发器报告的值可能不可信。因此从属触发器(上例中的服务器)只有在父触发器(路由器)满足以下条件时才会被重新评估:
上述所有情况下,从属触发器(服务器)只有在收到新指标时才会被重新评估。这意味着从属触发器可能不会立即更新。
此外:
要定义依赖关系,请打开触发器中的Dependencies选项卡 配置。在'Dependencies'区块中点击Add, 并选择一个或多个该触发器将依赖的触发器。

点击Update。现在该触发器在列表中会显示其依赖关系标识。

例如,主机位于Router2之后,而Router2又位于Router1之后。
如果Router1宕机,显然主机和Router2也将不可达, 但收到关于主机、Router1和Router2全部宕机的三个通知则显得冗余。
因此在这种情况下,我们定义两个依赖关系:
the 'Host is down' trigger depends on the 'Router2 is down' trigger
       the 'Router2 is down' trigger depends on the 'Router1 is down' trigger在更改"主机已宕机"触发器状态前,Zabbix会 检查对应的触发器依赖关系。若发现此类依赖且其中一个触发器 处于"问题"状态,则该触发器状态将不会 被更改,关联操作不会执行,且不会发送 任何通知。
Zabbix会递归执行此检查。若Router1或Router2 不可达,主机触发器将不会被更新。