定义处理器
编辑定义处理器编辑
您可以使用处理器在将数据发送到已配置的输出之前对其进行过滤和增强。要定义处理器,请指定处理器名称、可选条件和一组参数
processors: - <processor_name>: when: <condition> <parameters> - <processor_name>: when: <condition> <parameters> ...
其中
可以使用 if-then-else 处理器配置来完成更复杂的条件处理。这允许根据单个条件执行多个处理器。
processors: - if: <condition> then: - <processor_name>: <parameters> - <processor_name>: <parameters> ... else: - <processor_name>: <parameters> - <processor_name>: <parameters> ...
处理器在哪些地方有效?编辑
处理器在以下位置有效
- 在配置的顶层。该处理器应用于 Filebeat 收集的所有数据。
-
在特定输入下。该处理器应用于为该输入收集的数据。
- type: <input_type> processors: - <processor_name>: when: <condition> <parameters> ...
同样,对于 Filebeat 模块,您可以在模块定义的
input
部分下定义处理器。
处理器编辑
支持的处理器有
-
add_cloud_metadata
-
add_cloudfoundry_metadata
-
add_docker_metadata
-
add_fields
-
add_host_metadata
-
add_id
-
add_kubernetes_metadata
-
add_labels
-
add_locale
-
add_nomad_metadata
-
add_observer_metadata
-
add_process_metadata
-
add_tags
-
append
-
community_id
-
convert
-
copy_fields
-
decode_base64_field
-
decode_cef
-
decode_csv_fields
-
decode_duration
-
decode_json_fields
-
decode_xml
-
decode_xml_wineventlog
-
decompress_gzip_field
-
detect_mime_type
-
dissect
-
dns
-
drop_event
-
drop_fields
-
extract_array
-
fingerprint
-
include_fields
-
move-fields
-
parse_aws_vpc_flow_log
-
rate_limit
-
registered_domain
-
rename
-
replace
-
script
-
syslog
-
timestamp
-
translate_sid
-
truncate_fields
-
urldecode
条件编辑
每个条件都会接收一个字段进行比较。您可以通过在字段之间使用 AND
(例如,field1 AND field2
)来指定同一条件下的多个字段。
对于每个字段,您可以指定一个简单的字段名称或嵌套映射,例如 dns.question.name
。
有关 Filebeat 导出的所有字段的列表,请参阅 导出的字段。
支持的条件有
equals
编辑
使用 equals
条件,您可以比较字段是否具有某个值。该条件仅接受整数或字符串值。
例如,以下条件检查 HTTP 事务的响应代码是否为 200
equals: http.response.code: 200
contains
编辑
contains
条件检查值是否是字段的一部分。该字段可以是字符串或字符串数组。该条件仅接受字符串值。
例如,以下条件检查错误是否是事务状态的一部分
contains: status: "Specific error"
regexp
编辑
regexp
条件根据正则表达式检查字段。该条件仅接受字符串。
例如,以下条件检查进程名称是否以 foo
开头
regexp: system.process.name: "^foo.*"
range
编辑
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
编辑
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
值在 192.168.1.0
- 192.168.1.255
的 IPv4 范围内,则此条件返回 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
编辑
has_fields
条件检查事件中是否存在所有给定的字段。该条件接受表示字段名称的字符串值列表。
例如,以下条件检查事件中是否存在 http.response.code
字段。
has_fields: ['http.response.code']
or
编辑
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
运算符接收条件列表。
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
运算符接收要否定的条件。
not: <condition>
例如,要配置条件 NOT status = OK
not: equals: status: OK