触发器是逻辑表达式,用于“评估”由 监控项 收集的数据,并表示当前系统状态。
虽然 监控项 用于收集系统数据,但始终关注这些数据以等待某个需要警报或注意的条件是极其不切实际的。数据“评估”的任务可以交给触发器表达式。
触发器表达式允许定义数据状态的“可接受”阈值。因此,如果传入数据超过可接受状态,触发器将“触发”——或将其状态更改为问题(PROBLEM)。
触发器可能具有以下状态:
状态 | 描述 |
---|---|
OK | 这是正常的触发器状态。 |
问题(Problem) | 某些事情发生了。例如,处理器负载过高。 |
未知(Unknown) | 无法计算触发器值。请参阅 未知状态。 |
在简单的触发器中,我们可能希望为某些数据的五分钟平均值设置阈值,例如 CPU 负载。这可以通过定义触发器表达式来实现:
avg(/host/key,5m)>2
如果五分钟平均值超过 2,此触发器将“触发”(变为问题状态 PROBLEM)。
在更复杂的触发器中,表达式可能包含多个函数和多个阈值的组合。另请参阅:Trigger expression。
无法为具有二进制值的 监控项 创建触发器。
启用触发器(将配置状态从 禁用 更改为 启用)后,只要其中的 监控项 接收到值,或者到了处理 date and time 和/或 nodata() 函数的时间,触发器表达式就会被评估。
大多数触发器函数是基于监控项值的history数据进行计算的,而一些用于长期分析的触发器函数,例如trendavg()、trendcount()等,则使用趋势数据。
每次 Zabbix server 接收到属于触发器表达式一部分的新值时,都会重新计算触发器。当接收到新值时,表达式中包含的每个函数都会被重新计算(而不仅仅是接收到新值的那个函数)。
此外,当接收到新值时,以及在表达式中使用了 date and time 和/或 nodata() 函数的情况下,每 30 秒都会重新计算一次触发器。
Date and time 和/或 nodata() 函数由 Zabbix 历史同步进程每 30 秒重新计算一次。
仅引用趋势函数的触发器,每表达式中最小时间周期计算一次。另见 trend functions。
评估周期用于引用监控项历史的函数中。
它允许我们指定感兴趣的区间。评估周期可以指定为时间段(如30秒、10分钟、1小时)或值范围(如#5,表示最近的五个值)。
评估周期的测量截止到“当前”("now"),这里的“当前”是指触发器的最新重新计算时间(参见上面的计算时间);“当前”并不是服务器的实时时间。
评估周期可以指定为以下两种情况之一:
请注意:
在以下情况下,触发器表达式中可能会出现未知的操作数:
在这种情况下,触发器通常会评估为“未知”(尽管存在一些例外情况)。有关更多详细信息,请参阅 含有未知操作数的表达式。
可以对未知的触发器进行 get notified。