3 触发器依赖

概述

有时一个 主机 的可用性取决于另一个。一台服务器 如果路由器出现故障,位于路由器后面的主机将无法访问。 当同时配置了触发器时,你可能会收到关于两个问题的 get 通知 主机 处于宕机状态——而实际上只有路由器是罪魁祸首。

这正是主机之间某些依赖关系可能派上用场的地方。 依赖关系设置,依赖项的通知可能会被阻止并且 仅发送有关根本问题的通知。

虽然 Zabbix 不直接支持 主机 之间的依赖关系,但他们 可能通过另一种更灵活的方法 - 触发器来定义 依赖项。一个触发器可能有一个或多个它所依赖的触发器。

在我们简单的示例中,我们打开服务器触发器配置表单 并设置其依赖于路由器的相应触发器。 由于存在此类依赖关系,只要从属触发器的状态发生变化,主服务器触发器的状态就不会改变。 触发器所依赖的触发器处于“问题”状态,因此没有依赖项 将执行操作且不会发送任何通知。

如果服务器和路由器都处于宕机状态并且存在依赖关系, Zabbix 不会对依赖触发器执行 execute 操作。

当父级触发器处于 PROBLEM 状态时,其依赖项可能会报告不可信的值。 因此,依赖触发器将不会重新评估,直到父触发器(上面示例中的路由器):

  • 从“PROBLEM”状态返回到“OK”状态;
  • 将其状态从“PROBLEM”更改为'未知';
  • 是手动关闭的,或者是通过相关性关闭的,或者借助 date and time 和/或 nodata() 函数关闭的;
  • 由未参与依赖触发器的监控项的值解决;
  • 处于禁用状态,具有禁用的 监控项 或禁用的 监控项 主机

在上述所有情况下,只有在接收到该触发器的新监控项时,才会重新评估依赖触发器(服务器)。 这意味着依赖触发器可能不会立即更新。

此外:

  • 可以从任何主机触发器向任何其他触发器添加触发器依赖关系 主机触发器,只要不会导致循环引用 依赖关系。
  • 触发器依赖可以从一个模板添加到另一个模板。如果某些 模板A中的触发器依赖于模板B中的某个触发器, 模板 A 仅可链接到 一个主机(或另一个模板) 与模板 B 一起,但模板 B 可能链接到 一个主机(或者 另一个模板)单独使用。
  • 可以从模板触发器向一个主机添加触发器依赖关系 触发器。在这种情况下,将此类模板链接到 一个主机 将会 create 依赖于与该触发器相同触发器模板的一个主机触发器 根据。这允许例如拥有一个模板,其中 一些触发器依赖于路由器(主机)触发器。所有链接的主机 此模板将依赖于该特定路由器。
  • 不可从一个主机触发器向模板触发器添加触发器依赖。
  • 可以从一个触发器原型向另一个触发器原型添加触发器依赖关系 触发器原型(在同一低级别自动发现规则内)或 真实触发器。触发器原型可能不依赖于触发器 从其他LLD规则创建的原型或从其创建的触发器 触发器原型。一个主机 触发器原型不能依赖于某个触发器 从模板。

配置

要定义依赖关系,请打开触发器中的“依赖关系”选项卡 配置。在“依赖关系”块中点击 添加,并选择一个或多个该触发器所依赖的触发器。

点击 更新。现在触发器在列表中会显示其依赖关系的指示。

多个依赖项示例

例如,主机 位于 Router2 后方,而 Router2 位于 Router1 后方。

Zabbix - Router1 - Router2 - 主机

如果 Router1 出现故障,那么显然 主机 和 Router2 也无法访问。然而,收到三条关于 主机、Router1 和 Router2 全部宕机的通知是多余的。

因此,在这种情况下我们定义两个依赖关系:

'主机 宕机' 触发器依赖于 'Router2 宕机' 触发器  
       'Router2 宕机' 触发器依赖于 'Router1 宕机' 触发器  

在更改 '主机 宕机' 触发器的状态之前,Zabbix 将检查相应的触发器依赖关系。如果发现存在依赖,并且其中一个依赖触发器处于 "Problem(问题)" 状态,则不会更改该触发器的状态,不会执行任何动作,也不会发送任何通知。

Zabbix 会递归执行此检查。如果 Router1 或 Router2 不可达,则 主机 触发器将不会被更新。