[comment]: # translation:outdated

[comment]: # ({aa1f9956-aa1f9956})
# 1 条件

[comment]: # ({/aa1f9956-aa1f9956})

[comment]: # ({6ef58449-6ef58449})
#### 概述

可以定义仅在事件匹配特定条件集时执行操作。条件在配置[配置操作](/manual/config/notifications/action#配置操作)时设置。

条件匹配区分大小写。

[comment]: # ({/6ef58449-6ef58449})

[comment]: # ({ee5bc91a-6e7e1ac8})
#### 触发器动作

基于触发器的动作可使用以下条件:

| 条件类型 | 支持的运算符 | 描述 |
|--|--|------|
| *Host group* | equals<br>does not equal    | 指定主机组或要排除的主机组.<br>**等于** - 事件属于此主机组.<br>**不等于** - 事件不属于此主机组.<br>指定父主机组会隐式选择所有嵌套的主机组. 若仅指定父组, 必须额外使用**不等于**运算符设置所有嵌套组. |
| *Template* | equals<br>does not equal    | 指定模板或要排除的模板.<br>**等于** - 事件属于从此模板继承的触发器.<br>**不等于** - 事件不属于从此模板继承的触发器. |
| *Host* | equals<br>does not equal    | 指定主机或要排除的主机.<br>**等于** - 事件属于此主机.<br>**不等于** - 事件不属于此主机. |
| *Tag name* | equals<br>does not equal<br>contains<br>does not contain    | 指定事件标签或要排除的事件标签.<br>**等于** - 事件具有此标签<br>**不等于** - 事件不具有此标签<br>**包含** - 事件具有包含此string的标签<br>**不包含** - 事件不具有包含此string的标签 |
| *Tag value* | equals<br>does not equal<br>contains<br>does not contain    | 指定事件标签与值的组合或要排除的标签与值组合.<br>**等于** - 事件具有此标签和值<br>**不等于** - 事件不具有此标签和值<br>**包含** - 事件具有包含这些字符串的标签和值<br>**不包含** - 事件不具有包含这些字符串的标签和值 |
| *Trigger* | equals<br>does not equal    | 指定触发器或要排除的触发器.<br>**等于** - 事件由此触发器生成.<br>**不等于** - 事件由此触发器以外的任何其他触发器生成. |
| *Event name* | contains<br>does not contain    | 指定触发器生成的事件名称中的string或要排除的string. 默认情况下, 事件名称与触发器名称匹配, 除非在[trigger configuration](/manual/config/triggers/trigger)中指定了自定义事件名称.<br>**包含** - 事件名称包含此string.<br>**不包含** - 此string被排除在事件名称之外.<br>*注意*: 输入的值将与所有宏展开后的事件名称进行比较. |
| *Trigger severity* | equals<br>does not equal<br>is greater than or equals<br>is less than or equals    | 指定触发器严重性.<br>**等于** - 等于触发器严重性<br>**不等于** - 不等于触发器严重性<br>**大于或等于** - 大于或等于触发器严重性<br>**小于或等于** - 小于或等于触发器严重性 |
| *Time period* | in<br>not in    | 指定时间段或要排除的时间段.<br>**在** - 事件时间在时间段内.<br>**不在** - 事件时间不在时间段内.<br>有关格式描述, 请参阅[time period specification](/manual/appendix/time_period)页面.<br>自Zabbix 3.4.0起支持[User macros](/manual/config/macros/user_macros). |
| *Problem is suppressed* | no<br>yes    | 指定问题是否因主机维护而被抑制(不显示).<br>**否** - 问题未被抑制.<br>**是** - 问题被抑制.<br> |

[comment]: # ({/ee5bc91a-6e7e1ac8})

[comment]: # ({f2639fb7-6df27208})
#### 发现动作

基于发现的事件可使用以下条件:

| 条件类型 | 支持的运算符 | 描述 |
|--|--|------|
| *Host IP* | equals<br>does not equal    | 为发现的主机指定IP地址范围或排除范围。<br>**equals** - 主机 IP位于该范围内。<br>**does not equal** - 主机 IP不位于该范围内。<br>可采用以下格式：<br>单个IP: 192.168.1.33<br>IP地址范围: 192.168.1-10.1-254<br>IP掩码: 192.168.4.0/24<br>列表: 192.168.1.1-254, 192.168.2.1-100, 192.168.2.200, 192.168.4.0/24<br>自Zabbix 3.0.0起支持列表格式中使用空格。 |
| *Service type* | equals<br>does not equal    | 指定要发现的服务类型或要排除的服务类型.<br>**equals** - 匹配发现的服务.<br>**does not equal** - 不匹配发现的服务.<br>可用服务类型: SSH, LDAP, SMTP, FTP, HTTP, HTTPS *(自Zabbix 2.2 version起可用)*, POP, NNTP, IMAP, TCP, Zabbix agent, SNMPv1 agent, SNMPv2 agent, SNMPv3 agent, ICMP ping, telnet *(自Zabbix 2.2 version起可用)*. |
| *Service port* | equals<br>does not equal    | 指定发现服务的TCP端口范围或要排除的范围。<br>**equals** - 服务端口位于该范围内。<br>**does not equal** - 服务端口不位于该范围内。 |
| *Discovery rule* | equals<br>does not equal    | 指定要包含或排除的发现规则。<br>**equals** - 使用此发现规则。<br>**does not equal** - 使用除此规则外的其他发现规则。 |
| *Discovery check* | equals<br>does not equal    | 指定要包含或排除的发现检查项.<br>**equals** - 使用此发现检查项.<br>**does not equal** - 使用除此项外的其他发现检查项. |
| *Discovery object* | equals    | 指定发现的object.<br>**equals** - 等于发现的object（设备或服务）. |
| *Discovery status* | equals    | **Up** - 匹配 '主机 Up' 和 'Service Up' 事件<br>**Down** - 匹配 '主机 Down' 和 'Service Down' 事件<br>**Discovered** - 匹配 '主机 Discovered' 和 'Service Discovered' 事件<br>**Lost** - 匹配 '主机 Lost' 和 'Service Lost' 事件 |
| *Uptime/Downtime* | is greater than or equals<br>is less than or equals    | '主机 运行'与'服务运行'事件的运行时间。'主机 停止'与'服务停止'事件的停机时间。<br>**大于或等于** - 达到或超过指定值。参数以秒为单位。<br>**小于或等于** - 低于或等于指定值。参数以秒为单位。 |
| *Received value* | equals<br>does not equal<br>is greater than or equals<br>is less than or equals<br>contains<br>does not contain    | 在发现规则中指定从agent(Zabbix, SNMP)检查接收到的值。string比较。如果为规则配置了多个Zabbix agent或SNMP检查，则对每个检查接收到的值进行验证(每个检查都会生成一个新事件，该事件将与所有条件进行匹配)。<br>**equals** - 等于该值。<br>**does not equal** - 不等于该值。<br>**is greater than or equals** - 大于或等于该值。<br>**is less than or equals** - 小于或等于该值。<br>**contains** - 包含子字符串。参数以string形式给出。<br>**does not contain** - 不包含子字符串。参数以string形式给出。 |
| *Proxy* | equals<br>does not equal    | 指定要排除的proxy或proxy.<br>**equals** - 使用此proxy.<br>**does not equal** - 使用除此外的其他proxy. |

::: noteclassic
发现规则中的服务检查，其结果为
发现事件不会同时发生。因此，如果
为`Service type`、`Service port`配置了**多个**值
`Received value` 动作中的条件将被相互比较
一次只能处理一个发现事件，**不能**同时处理多个事件。
因此，对于同一检查类型具有多个值的操作可能会
无法正确执行。

:::

[comment]: # ({/f2639fb7-6df27208})

[comment]: # ({8d65819c-e9b18b74})
#### 自动注册动作

以下条件可用于基于活动agent的操作
自动注册:

| 条件类型 | 支持的运算符 | 描述 |
|--|--|------|
| *Host metadata* | contains<br>does not contain<br>matches<br>does not match    | 指定要包含的主机元数据或要排除的主机元数据。<br>**包含** - 主机元数据包含string。<br>**不包含** - 主机元数据不包含string。<br>主机元数据可在[agent configuration file](/manual/appendix/config/zabbix_agentd)中指定。<br>**匹配** - 主机元数据符合正则表达式。<br>**不匹配** - 主机元数据不符合正则表达式。 |
| *Host name* | contains<br>does not contain<br>matches<br>does not match    | 指定要包含的一个主机名称或要排除的一个主机名称.<br>**contains** - 主机名包含string.<br>**does not contain** - 主机名不包含string.<br>**matches** - 主机名匹配正则表达式.<br>**does not match** - 主机名不匹配正则表达式. |
| *Proxy* | equals<br>does not equal    | 指定要包含或排除的proxy。<br>**等于** - 使用此proxy。<br>**不等于** - 使用除此proxy外的其他proxy。 |

[comment]: # ({/8d65819c-e9b18b74})

[comment]: # ({0157cf2c-133d6ae1})
#### 内部事件动作

基于内部事件可设置以下动作条件:

| 条件类型 | 支持的操作符 | 描述 |
|--|--|------|
| *Event type* | equals    | **监控项处于"不支持"状态** - 匹配监控项从'正常'变为'不支持'状态的事件<br>**低阶发现规则处于"不支持"状态** - 匹配低阶发现规则从'正常'变为'不支持'状态的事件<br>**触发器处于"未知"状态** - 匹配触发器从'正常'变为'未知'状态的事件 |
| *Host group* | equals<br>does not equal    | 指定主机组或要排除的主机组<br>**等于** - 事件属于该主机组<br>**不等于** - 事件不属于该主机组 |
| *Tag name* | equals<br>does not equal<br>contains<br>does not contain    | 指定事件标签或要排除的事件标签<br>**等于** - 事件具有此标签<br>**不等于** - 事件不具有此标签<br>**包含** - 事件具有包含此string的标签<br>**不包含** - 事件不具有包含此string的标签 |
| *Tag value* | equals<br>does not equal<br>contains<br>does not contain    | 指定事件标签与值组合或要排除的标签与值组合<br>**等于** - 事件具有此标签和值<br>**不等于** - 事件不具有此标签和值<br>**包含** - 事件具有包含这些字符串的标签和值<br>**不包含** - 事件不具有包含这些字符串的标签和值 |
| *Template* | equals<br>does not equal    | 指定模板或要排除的模板<br>**等于** - 事件属于从此模板继承的监控项/触发器/低阶发现规则<br>**不等于** - 事件不属于从此模板继承的监控项/触发器/低阶发现规则 |
| *Host* | equals<br>does not equal    | 指定主机或要排除的主机<br>**等于** - 事件属于该主机<br>**不等于** - 事件不属于该主机 |

[comment]: # ({/0157cf2c-133d6ae1})

[comment]: # ({a83ec60b-8c003f8b})
#### 计算类型

计算条件提供以下选项:

-   **与(And)** - 必须满足所有条件

注意：当多个触发器被选作`Trigger=`条件时，禁止在这些触发器之间使用"与(And)"计算方式。操作只能基于单个触发器的事件执行。

-   **或(Or)** - 只需满足一个条件即可
-   **与/或(And/Or)** - 两种方式的组合：不同条件之间使用AND

    types and OR with the same condition type, for example:

*主机组*等于Oracle服务器\
*主机组*等于MySQL服务器\
*事件名称*包含'数据库宕机'\
*事件名称*包含'数据库不可用'

将被评估为

**(**主机组等于Oracle服务器 **或** 主机组等于MySQL
服务器**)** **与** **(**事件名称包含'数据库宕机'
**或** 事件名称包含'数据库不可用'**)**

-   **自定义表达式** - 用户定义的计算公式

    evaluating action conditions. It must include all conditions
    (represented as uppercase letters A, B, C, ...) and may include
    spaces, tabs, brackets ( ), **and** (case sensitive), **or** (case
    sensitive), **not** (case sensitive).

虽然前面使用`And/Or`的例子可以表示为(A或B)与(C或D)，但在自定义表达式中您也可以使用多种其他计算方式:

(A与B)且(C或D)\
(A与B)或(C与D)\
((A或B)且C)或D\
(非(A或B)且C)或非D\
等等

[comment]: # ({/a83ec60b-8c003f8b})

[comment]: # ({fca3d6de-fca3d6de})
#### 由于删除的objects导致操作被禁用

如果在动作条件/操作中使用的某个object（主机、模板、触发器等）被删除，系统将移除该条件/操作并禁用该动作，以避免动作的错误执行。用户可手动重新启用该动作。

此行为在删除以下对象时触发：

-   主机组（"主机组"条件，针对特定主机组的"远程命令"操作）；
-   主机（"主机"条件，针对特定主机的"远程命令"操作）；
-   模板（"模板"条件，"关联模板"和"取消关联模板"操作）；
-   触发器（"触发器"条件）；
-   发现规则（当使用"发现规则"和"发现检查"时）

    conditions).

*注意*：如果远程命令包含多个目标主机，而我们delete其中一个时，仅会从目标列表中移除该主机，操作本身仍会保留。但若这是唯一的主机，则该操作也会被移除。"关联模板"和"取消关联模板"操作同理。

当删除"发送消息"操作中使用的用户或用户组时，动作不会被禁用。

[comment]: # ({/fca3d6de-fca3d6de})
