2 配置触发器
本页介绍如何在 Zabbix 前端中配置触发器。
请注意,官方 Zabbix 模板包含预定义的触发器。
请参阅将模板应用于监控 Linux的指南。
也可以对已配置的触发器进行批量更新。
其他资源:
- 使用触发器进行问题检测(总体介绍)
- 触发器示例(按使用场景分类)
- 触发器表达式(语法细节)
- 最佳实践
配置
要配置触发器,请执行以下操作:
- 转到:数据采集 > 主机
- 单击该主机所在行中的 触发器
- 单击右侧的 创建触发器(或单击触发器名称以编辑现有触发器)
- 在表单中输入触发器参数
Trigger 选项卡包含所有必需的触发器属性。

所有必填输入字段都用红色星号标记。
| Parameter | Description |
|---|---|
| Name | 触发器名称。 支持的 macros 有:{HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {HOST.CONN}, {HOST.DNS}, {HOST.IP}, {ITEM.VALUE}, {ITEM.VALUE.AGE}, {ITEM.VALUE.DATE}, {ITEM.VALUE.TIME}, {ITEM.VALUE.TIMESTAMP}, {ITEM.LASTVALUE}, {ITEM.LASTVALUE.AGE}, {ITEM.LASTVALUE.DATE}, {ITEM.LASTVALUE.TIME}, {ITEM.LASTVALUE.TIMESTAMP}, {ITEM.LOG.*},以及 {$MACRO} 用户宏。 $1, $2...$9 macros 可用于引用表达式中的第一、第二……第九个常量。 Note: 如果引用的是相对简单、直接的表达式,$1-$9 macros 将正确解析。例如,如果表达式为 last(/New host/system.cpu.load[percpu,avg1])>5,那么名称 "Processor load above $1 on {HOST.NAME}" 将自动变为 "Processor load above 5 on New host"。 |
| Event name | 如果定义了此项,该名称将用于创建问题事件名称。默认情况下,事件名称与触发器名称相同。 事件名称可用于构建包含问题数据的有意义告警(参见 示例)。 支持的宏集合与触发器名称相同,另外还支持 {TIME}、{TIMESTAMP} 和 {?EXPRESSION} expression macros。 |
| Operational data | Operational data 允许定义任意字符串以及 macros。macros 会在 Monitoring > Problems 中动态解析为实时数据。触发器名称中的 macros(见上文)会在问题发生时解析为其值,并成为静态问题名称的基础,而 operational data 中的 macros 则保留动态显示最新信息的能力。如果未在触发器级别配置 operational data,则会显示表达式中所有监控项的最新值。 支持的宏集合与触发器名称相同。 |
| Severity | 通过单击按钮设置所需的触发器 severity。 |
| Expression | 用于定义问题条件的逻辑 expression。 支持 time suffixes 和 memory size suffixes。 当表达式中包含的所有条件都满足时,即表达式计算结果为 TRUE 时,将创建问题。只要表达式计算结果为 FALSE,问题就会被解决,除非在 Recovery expression 中指定了额外的恢复条件。 |
| OK event generation | OK 事件生成选项: Expression - 基于与问题事件相同的表达式生成 OK 事件; Recovery expression - 当问题表达式计算结果为 FALSE 且恢复表达式计算结果为 TRUE 时生成 OK 事件; None - 在这种情况下,触发器不会自行恢复为 OK 状态。 |
| Recovery expression | 逻辑 expression(可选),用于定义在原始问题表达式已计算为 FALSE 后,问题被解决前必须满足的附加条件。 Recovery expression 对触发器 hysteresis 很有用。如果问题表达式仍为 TRUE,则仅靠恢复表达式无法解决问题。 仅当 OK event generation 选择了 'Recovery expression' 时,此字段才可用。 |
| PROBLEM event generation mode | 生成问题事件的模式: Single - 当触发器首次进入 'Problem' 状态时生成单个事件; Multiple - 每次触发器评估为 'Problem' 时都生成一个事件。 |
| OK event closes | 选择 OK 事件是否关闭: All problems - 关闭此触发器的所有问题; All problems if tag values match - 仅关闭事件标签值匹配的触发器问题。 |
| Tag for matching | 输入用于事件关联的事件标签名称。 当 OK event closes 属性选择 'All problems if tag values match' 时会显示此字段,并且在这种情况下为必填项。 |
| Allow manual close | 勾选后允许对由此触发器生成的问题事件进行手动关闭。在确认问题事件时可以进行手动关闭。 |
| Menu entry name | 如果不为空,这里输入的名称(最多 64 个字符)会在多个前端位置用作 Menu entry URL 参数中指定的触发器 URL 的标签。如果为空,则使用默认名称 Trigger URL。 支持的宏集合与触发器名称相同,另外还支持 {EVENT.ID}、{HOST.ID} 和 {TRIGGER.ID}。 |
| Menu entry URL | 如果不为空,这里输入的 URL(最多 2048 个字符)会在多个前端位置的 event menu 中作为链接可用,例如在 Monitoring > Problems 中单击问题名称时,或在 Problems 仪表板小组件中单击时。 支持的宏集合与触发器名称相同,另外还支持 {EVENT.ID}、{HOST.ID} 和 {TRIGGER.ID}。注意:带有密钥值的用户宏不会在 URL 中解析。 |
| Description | 用于提供有关此触发器更多信息的文本字段。可包含修复特定问题的说明、负责人员的联系方式等。 支持的宏集合与触发器名称相同。 |
| Enabled | 如有需要,取消勾选此框将禁用触发器。 已禁用触发器的问题将不再显示在前端中,但不会被删除。 |
Tags 选项卡允许您定义触发器级别的 tags。 此触发器的所有问题都会使用这里输入的值进行标记。

此外,Inherited and trigger tags 选项允许您查看从模板继承的标签,前提是该触发器来自该模板。 如果多个模板具有相同的标签,这些标签只会显示一次,模板名称之间用逗号分隔。 触发器不会“继承”并显示主机级别的标签。
| Parameter | Description |
|---|---|
| Name/Value | 设置自定义标签以标记触发器事件。 标签由标签名称和值组成。您可以只使用名称,也可以将其与值配对。一个触发器可以有多个同名但不同值的标签。 事件标签支持用户宏、带上下文的用户宏、低级别发现宏,以及带有 {{ITEM.VALUE}}、{{ITEM.LASTVALUE}} 的宏 functions。低级别发现宏可在宏上下文中使用。{TRIGGER.ID} 宏支持用于触发器标签值。它可用于标识从触发器原型创建的触发器,例如在维护期间抑制这些触发器产生的问题。 如果展开后的值总长度超过 255,则会被截断为 255 个字符。 请参阅事件标签支持的所有 macros。 Event tags 可用于事件关联、动作条件中,也会显示在 Monitoring > Problems 或 Problems 小组件中。 |
Dependencies 选项卡包含该触发器的所有 dependencies。
单击 Add 可添加新的依赖关系。
您也可以通过打开现有触发器,单击 Clone 按钮,然后以不同名称保存来配置触发器。
触发器表达式测试
可以根据接收到的值测试表达式结果会是什么。
以下来自官方模板的表达式作为示例:
avg(/Cisco IOS SNMPv2/sensor.temp.value[ciscoEnvMonTemperatureValue.{#SNMPINDEX}],5m)>{$TEMP_WARN}
or
last(/Cisco IOS SNMPv2/sensor.temp.status[ciscoEnvMonTemperatureState.{#SNMPINDEX}])={$TEMP_WARN_STATUS}
要测试表达式,请单击表达式字段下方的 Expression constructor。

在 Expression constructor 中,会列出所有单独的表达式。
要打开测试窗口,请单击表达式列表下方的 Test。

在测试窗口中,您可以输入示例值(本例中为 '80'、'70'、'0'、'1'),然后单击 Test 按钮查看表达式结果。

可以看到各个单独表达式以及整个表达式的结果。
“TRUE”表示指定的表达式正确。
在此特定示例 A 中,“80”大于 {$TEMP_WARN} 指定的值,本例中为“70”。
如预期一样,会显示“TRUE”结果。
“FALSE”表示指定的表达式不正确。
在此特定示例 B 中,{$TEMP_WARN_STATUS} 的“1”需要与指定值相等,本例中为“0”。
如预期一样,会显示“FALSE”结果。
所选表达式类型为“OR”。
如果指定条件中至少有一个(此处为 A 或 B)为 TRUE,则整体结果也将为 TRUE。
这意味着当前值超过了警告值,并且已经发生问题。