我正在尝试在 filebeat.yml 中设置一些处理器,以便在发送到 ELK 之前处理一些日志。
处理的一个重要部分是确定事件的“级别”,它并不总是包含在日志文件的行中。
这是我现在的想法:
# /var/log/messages
- type: log
processors:
- dissect:
tokenizer: "%{month} %{day} %{time} %{hostname} %{service}: {%message}"
field: "message"
target_prefix: "dissect"
- if:
when:
regexp:
message: ((E|e)rror|(f|F)ault)
then:
- add_fields:
target: 'dissect'
fields:
level: error
else:
- if:
when:
regexp:
message: (W|W)arning
then:
- add_fields:
target: 'dissect'
fields:
level: warning
else:
- add_fields:
target: 'dissect'
fields:
level: information
- drop_fields:
#duplicate
fields: ["dissect.month","dissect.day","dissect.time","dissect.hostname","message"]
# Change to true to enable this input configuration.
enabled: true
paths:
- /var/log/messages
我仍然不确定我正在尝试的那些模式......但现在我不认为它们是导致我失败的原因。
尝试使用控制台输出运行 filebeat 以进行测试时
filebeat -e -c filebeat.yml
我收到以下错误:
2022-01-26T17:45:27.174+0200 ERROR instance/beat.go:877 Exiting: Error while initializing input: failed to make if/then/else processor: missing or invalid condition
Exiting: Error while initializing input: failed to make if/then/else processor: missing or invalid condition
一般来说,我对 yaml 很陌生,我之前做过的唯一其他节拍是 AuditBeat (它有效,并且有条件,但不是“如果”)。有谁知道问题可能是什么?
澄清一下:我注释掉了所有其他“输入”条目,只留下了这个,仍然得到这个错误。
编辑:版本:7.2.0