这是原厂英文文档的翻译页面. 欢迎帮助我们 完善文档.

Sidebar

Zabbix Summit 2022
Register for Zabbix Summit 2022

3 触发器

概述

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

当我们使用监控项用于采集系统的数据时,一种不切合实际的情况是,我们无法始终等待一个警告或值得关注的条件。综上“评估”监控项数据的工作,我们可以留给触发器表达式。

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

一个触发器可以拥有下面几种状态:

OK 这是一个正常的触发器状态。在旧版本的Zabbix中称为FALSE。
PROBLEM 通常意味着发生了某些事情。例如,CPU负载较高。在旧版本的Zabbix中称为TRUE。

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

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

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

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

大多数触发函数的评估基于history数据,而一些 用于长期分析的触发函数,例如trendavg()trendcount() 等,使用趋势数据。

After enabling a trigger (changing its configuration status from Disabled to Enabled), the trigger expression is evaluated as soon as an item in it receives a value or the time to handle a time-based function comes.

Most trigger functions are evaluated based on item value history data, while some trigger functions for long-term analytics, e.g. trendavg(), trendcount(), etc, use trend data.

Calculation time

A trigger is recalculated every time Zabbix server receives a new value that is part of the expression. When a new value is received, each function that is included in the expression is recalculated (not just the one that received the new value).

Additionally, a trigger is recalculated each time when a new value is received and every 30 seconds if time-based functions are used in the expression.

Time-based functions are nodata(), date(), dayofmonth(), dayofweek(), time(), now(); they are recalculated every 30 seconds by the Zabbix history syncer process.

Triggers that reference trend functions only are evaluated once per the smallest time period in the expression. See also trend functions.

评估周期

在引用监控项历史的函数中使用评估周期。 它允许指定我们感兴趣的间隔。它可以是 指定为时间段 (30s, 10m, 1h) 或值范围 (#5 - for 五个最近值)。

评估周期测量到“now(现在)” - 其中“now(现在)”是 触发器的最新重新计算时间(参见Calculation time 上面); “now(现在)”不是现在的“now(现在)”服务器时间。

评估周期指定:

  • 考虑“now-time period(现在时间周期)”和“now(现在)”之间的所有值(或者,与 时间偏移量,在“now-time shift-time period(现在时间偏移点时间区间)”和 “now-time_shift(现在)”)
  • 考虑不超过过去的值的数量,向上 到“now(现在)”
    • 如果时间周期或计数有 0 个可用值 指定 - 然后是使用它的触发器或计算项 功能变得不受支持.

注意:

  • 如果在触发器中只使用一个函数(引用监控数据历史),那么“now(现在)”总是最新收到的值。例如,如果最后一个值是在一小时前收到的,那么评估期将被视为一小时前的最新值。
  • 当第一个监控值被接收时,一个新的触发器被计算出来(history functions 历史函数);基于时间的函数将在30秒内计算。因此,即使设置的评估周期(例如 一个小时)自触发器创建以来还没有过去,也将计算触发器。触发器也将在第一个值之后计算,即使计算范围被设置为10个最新的值。

Unknown state

It is possible that an unknown operand appears in a trigger expression if:

  • an unsupported item is used
  • the function evaluation for a supported item results in an error

In this case a trigger generally evaluates to "unknown" (although there are some exceptions). For more details, see Expressions with unknown operands.

It is possible to get notified on unknown triggers.