概述

    这就是主机之间某些依赖关系可能有用的地方,依赖关系设置的通知可能会被抑制,而只发送根本问题的通知。

    虽然Zabbix不支持主机之间的直接依赖关系,但是它们可以定义另外一种更加灵活的方式——触发器依赖关系。一个触发器可能有多个依赖于它的触发器。

    所以在上面提到的例子中,我们打开服务器的触发器配置的窗口,并设置依赖于路由设备的相应触发器。有了这样的依赖关系,只要它所依赖的触发器处于“PROBLEM”状态,服务器触发器就不会改变状态,因此不会执行依赖的动作,同时也不会发送通知。

    如果路由设备和服务器同时宕机,如果有依赖关系,那么Zabbix将不会执行服务器的触发动作。

    如果当前触发器所依赖的触发器的状态从“PROBLEM”变更为“UNKNOWN”,那么则不会执行这个依赖触发器的动作。

    值得注意的是,如果触发器所依赖的触发器被禁用、监控项,甚至主机被禁用,则依赖触发器的事件/动作将不会被抑制。

    • 触发器依赖可以从任何主机触发器添加到另一个主机触发器,只要它不会导致循环的依赖即可。

    • 触发器依赖可以从模板添加到另一个模板,如果模板A的触发器依赖于模板B的触发器,一个主机要链接到模板A的话,那么它同时要链接到模板B(因为模板A的触发器依赖于模板B的触发器),但是主机却可以单独链接到模板B,因为模板B是被依赖的。

    • 可能不会添加从主机触发器到模板触发器的触发器依赖。

    • 触发器依赖可以从一个触发器原型添加到另一个触发器原型(在同一个Low-level discovery规则中)或一个真实的触发器。触发器原型可能不依赖于从不同LLD规则的触发器原型或从触发器原型中创建的一个触发器。主机触发器原型不会依赖于来自模板的触发器。

    配置

    要定义触发器依赖,打开触发器的Dependencies选项卡,在“Dependencies”选项卡点击Add进行添加,并选择所依赖的一个或多个触发器。

    点击Update更新,就可以看到所依赖的触发器列表。

    几个依赖关系的示例

    例如, 主机的前面有Router1,Router2的前面有Router1。

    如果Router1宕掉,那么很明细那Host和Router2就不可达了,但我们并不想收到关于Host、Router1和Router2宕掉的这三个通知。

    于是我们定义了如下两个依赖关系:

    1. 'Router2 is down' trigger depends on 'Router1 is down' trigger

    在改变“Host is down”触发器的状态之前,Zabbix将会检查相应触发器的依赖关系,如果找到,并且一个触发器处于“Problem”状态,则触发器状态将不会发生改变,因此不会执行actions动作,也不会发出相应的通知。