3 触发器

概述

触发器是“评估”监控项采集的数据和表示当前系统状况的逻辑表达式。

当监控项用于采集系统的数据时,始终遵循这些数据是非常不切合实际的,因为这些数据始终在等待一个令人担忧或者值得关注的状态。然而这个“评估”数据的工作可以留给触发器表达式。

触发器表达式允许定义一个什么状况的数据是“可接受”的阈值。因此,如果接收的数据超过了可接受的状态,则触发器会被触发 - 或将状态更改为异常。

一个触发器可能有下列状态:

状态 描述
OK 这是一个正常的触发器状态
Problem 通常发生了异常情况,例如CPU负载较高。
Unknown 触发器值不能被计算, 查看未知状态

在基本触发器配置中,我们可能希望为某些监控数据的五分钟平均值设置告警阈值,例如 CPU 负载。这是通过定义一个触发器表达式来完成的,其中:

  • 将“avg”函数应用于监控项键中收到的值
  • 使用五分钟的时间进行评估
  • 将阈值设置为“2”
    avg(/host/key,5m)>2

如果五分钟平均值超过 2,此触发器将“触发”(状态变为PROBLEM)。

在更复杂的触发器中,表达式可能包含组合 具有多种功能和多种阈值。参阅: 触发器表达式.

无法为具有二进制值的监控项创建触发器。

在启用触发器(将其配置状态从 Disabled 更改为 Enabled)后,一旦触发器中的项目接收到值,或者处理 日期和时间 和/或 nodata() 函数的时间到来,触发器表达式将立即进行评估。

大多数触发函数都是根据监控项值进行评估的历史 数据,而一些用于长期分析的触发功能,例如 趋势平均值(),趋势计数()等,使用趋势数据。

计算时间

每当Zabbix服务器接收到构成表达式一部分的新值时,触发器都会重新计算。当接收到新值时,表达式中包含的每个函数都会重新计算(而不仅仅是接收新值的那个函数)。

此外,如果在表达式中使用了日期和时间和/或nodata()函数,每当接收到新值时以及每隔30秒,触发器都会重新计算。

日期和时间和/或nodata()函数由Zabbix历史同步进程每隔30秒重新计算一次。

仅引用趋势函数的触发器每最小时间周期评估一次,该周期为表达式中的最小时间周期。另请参阅trend functions

评估周期

评估周期用于函数中引用监控项历史数据。 它允许指定我们感兴趣的区间。可以 按时间周期(30s,10m,1h)或值范围(#5 - 最新五个值)来 指定。

评估周期测量至“现在”- 其中“现在”是 触发器最新重算时间(参见上方的计算 时间);“现在”并非服务器的“现在”时间。

评估周期指定:

  • 考虑从“现在-时间周期”到“现在”的所有值(或,带时间偏移,从“现在-时间偏移-时间周期”到 “现在-时间_偏移”)
  • 考虑过去不超过num计数的值,直至“现在”
    • 如果指定的时间周期或num计数内没有可用值 - 则使用此 函数的触发器或计算监控项将不受支持

请注意:

  • 如果触发器中仅使用一个函数(引用数据历史),“现在”始终是最新接收的值。例如,如果 最后一个值在一小时前接收,评估周期将 被视为直至一小时前的最新值。
  • 收到第一个值后立即计算新触发器(历史函数);对于 日期和时间nodata()函数,将在30秒内计算。因此,即使可能设定的评估周期(例如,一小时)自触发器创建以来尚未 过去,触发器也将被计算。在收到第一个值后,即使设定了评估 范围,例如,十个最新值,触发器也将被计算。

未知状态

在以下情况下,触发器表达式中可能会出现未知操作数:

  • · 使用了不受支持的监控项
  • · 支持监控项的功能评估导致错误

在这种情况下,触发器通常评估为“未知”(尽管有一些例外)。 有关详细信息,请参阅带有未知操作数的表达式

可以在未知触发器获取信息