给出以下logstash配置:
input { stdin {}
}
filter {
grok {
match => ["message", "foo (?<bar>.*)",
"message", "quux (?<stuff>.*)"
]
}
if "bar" in [tags] {
mutate {
add_field => { "had_bar" => "yup"}
}
}
}
output { stdout { codec => rubydebug } }
我希望以"foo "
开头的消息可以将字段had_bar
添加到我的活动中。但是,当我尝试它时:
* bin/logstash -f simple.conf
Picked up JAVA_TOOL_OPTIONS: -Xmx1G
foo bar quux
{
"message" => "foo bar quux",
"@version" => "1",
"@timestamp" => "2014-05-14T09:46:15.498Z",
"host" => "my-dev-machine.com",
"bar" => "bar quux"
}
我做错了什么?我知道grok还提供add_field
选项,但我只想在遇到第一个模式时添加该字段。
答案 0 :(得分:2)
您正在检查tags
中的字段,但tags
只是该事件的正常字段。你想要的是:
if [bar] {
# ...
}