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