我想在 Logstash(版本 2.4)中创建一个过滤器,在同一个 grok 中使用不同的匹配项。
我想根据比赛添加不同的标签。
基本上,我收到三种不同的消息模式:
“##MAGIC##%消息”
“##REAL##%消息”
“%信息”
我想做的是:
grok {
match => {"message" => "##MAGIC##%{GREEDYDATA:magic_message}"}
match => {"message" => "##REAL##%{GREEDYDATA:real_message}"}
match => {"message" => "%{GREEDYDATA:basic_message}"}
if [magic_message]{
overwrite => [ "message"]
add_tag => ["Magic"]
} else if [real_message]{
overwrite => [ "message"]
add_tag => ["Real"]
}else{
overwrite => [ "message"]
add_tag => ["Basic"]
}
但是,我得到这个编译失败:
The given configuration is invalid. Reason: Expected one of #, => at line 34, column 9 (byte 900) after filter {
grok {
match => {"message" => "##MAGIC##%{GREEDYDATA:magic_message}"}
match => {"message" => "##REAL##%{GREEDYDATA:real_message}"}
match => {"message" => "%{GREEDYDATA:basic_message}"}
if {:level=>:fatal}
Logstash 配置语法不是这样工作的。
这应该可以更好地工作(假设您想将消息替换为magic_message
/real_message
):
grok {
match => {"message" => [ "##MAGIC##%{GREEDYDATA:magic_message}",
"##REAL##%{GREEDYDATA:real_message}",
"%{GREEDYDATA:basic_message}"]}
}
if [magic_message] {
mutate {
replace => { "message" => "%{magic_message}" }
add_tag => ["Magic"]
}
} else if [real_message] {
mutate {
replace => { "message" => "%{real_message}" }
add_tag => ["Real"]
}
} else {
mutate {
add_tag => ["Basic"]
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)