处理器语法
指定一个或多个处理器列表
- 在独立 Elastic Agent 配置文件中配置处理器时,将此列表放在
processors
设置下。 - 在 Kibana 中使用 Integrations UI 时,将此列表放在处理器 (Processors) 字段中。
每个处理器都以破折号 (-) 开头,并包括处理器名称、可选的条件以及传递给处理器的配置设置
- <processor_name>:
when:
<condition>
<settings>
- <processor_name>:
when:
<condition>
<settings>
如果指定了条件,则必须满足该条件处理器才能运行。如果未指定条件,则处理器始终运行。
为了实现复杂的条件处理,请使用 if-then-else 处理器配置。此配置允许您根据单个条件运行多个处理器。例如
- if:
<condition>
then:
- <processor_name>:
<settings>
- <processor_name>:
<settings>
...
else:
- <processor_name>:
<settings>
- <processor_name>:
<settings>
then
必须包含一个或多个处理器,这些处理器将在条件为true
时执行。else
是可选的。它可以包含一个或多个处理器,这些处理器将在条件为false
时执行。
每个条件接收一个要比较的字段。您可以使用字段之间的 AND
在同一条件下指定多个字段(例如,field1 AND field2
)。
对于每个字段,您可以指定一个简单的字段名称或嵌套映射,例如 dns.question.name
。
有关特定集成创建的所有字段列表,请参阅集成文档。
支持的条件有
使用 equals
条件,您可以检查字段是否具有特定值。该条件仅接受整数或字符串值。
例如,以下条件检查 HTTP 事务的响应代码是否为 200
equals:
http.response.code: 200
contains
条件检查值是否是字段的一部分。该字段可以是字符串或字符串数组。该条件仅接受字符串值。
例如,以下条件检查错误是否是事务状态的一部分
contains:
status: "Specific error"
regexp
条件根据正则表达式检查字段。该条件仅接受字符串。
例如,以下条件检查进程名称是否以 foo
开头
regexp:
system.process.name: "^foo.*"
range
条件检查字段是否在特定值范围内。该条件支持 lt
、lte
、gt
和 gte
。该条件仅接受整数或浮点值。
例如,以下条件通过将 http.response.code
字段与 400 进行比较来检查失败的 HTTP 事务。
range:
http.response.code:
gte: 400
这也可以写成
range:
http.response.code.gte: 400
以下条件检查 CPU 使用率百分比的值是否介于 0.5 和 0.8 之间。
range:
system.cpu.user.pct.gte: 0.5
system.cpu.user.pct.lt: 0.8
network
条件检查字段是否在特定 IP 网络范围内。支持 IPv4 和 IPv6 地址。可以使用 CIDR 表示法(例如“192.0.2.0/24”或“2001:db8::/32”)或使用以下命名范围之一指定网络范围
loopback
- 匹配范围为127.0.0.0/8
或::1/128
的回环地址。unicast
- 匹配 RFC 1122、RFC 4632 和 RFC 4291 中定义的全局单播地址,但不包括 IPv4 广播地址 (255.255.255.255
)。这包括私有地址范围。multicast
- 匹配多播地址。interface_local_multicast
- 匹配 IPv6 接口本地多播地址。link_local_unicast
- 匹配链路本地单播地址。link_local_multicast
- 匹配链路本地多播地址。private
- 匹配 RFC 1918 (IPv4) 和 RFC 4193 (IPv6) 中定义的私有地址范围。public
- 匹配非回环、未指定、IPv4 广播、链路本地单播、链路本地多播、接口本地多播或私有的地址。unspecified
- 匹配未指定地址(IPv4 地址“0.0.0.0”或 IPv6 地址“::”)。
如果 source.ip
值在私有地址空间内,则以下条件返回 true。
network:
source.ip: private
如果 destination.ip
值在 IPv4 范围 192.168.1.0
- 192.168.1.255
内,则此条件返回 true。
network:
destination.ip: '192.168.1.0/24'
当 destination.ip
在给定任一子网内时,此条件返回 true。
network:
destination.ip: ['192.168.1.0/24', '10.0.0.0/8', loopback]
has_fields
条件检查事件中是否存在所有给定字段。该条件接受表示字段名称的字符串值列表。
例如,以下条件检查事件中是否存在 http.response.code
字段。
has_fields: ['http.response.code']
or
运算符接收条件列表。
or:
- <condition1>
- <condition2>
- <condition3>
...
例如,配置条件 http.response.code = 304 OR http.response.code = 404
or:
- equals:
http.response.code: 304
- equals:
http.response.code: 404
and
运算符接收条件列表。
and:
- <condition1>
- <condition2>
- <condition3>
...
例如,配置条件 http.response.code = 200 AND status = OK
and:
- equals:
http.response.code: 200
- equals:
status: OK
要配置诸如 <condition1> OR <condition2> AND <condition3>
的条件
or:
- <condition1>
- and:
- <condition2>
- <condition3>
not
运算符接收要否定的条件。
not:
<condition>
例如,配置条件 NOT status = OK
not:
equals:
status: OK