logstash如果字段存在然后grok

时间:2016-02-18 17:17:48

标签: elasticsearch logstash logstash-grok grok logstash-file

我正在尝试为logstash创建一个过滤器,该过滤器将具有" general"所有日志的grok过滤器,如果存在某个字段,那么我希望它执行不同的grok。

我使用的第一个小伙伴是

grok {
match => [
"message", "....%{NOTSPACE:name} %{GREEDYDATA:logcontent}" 
]
}

这很有效。但我希望这能够过滤更多,如果" name"字段就是" foo"

if [name] == "foo" {
grok {
match => [
"message", ".....%{NOTSPACE:name} %{NOTSPACE:object1} %{NOTSPACE:object2}" 
]
}

我试过这个选项,但它没有用。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

最简单的方法是在浏览任何内容之前在消息上使用模式匹配。

例如:

if [message] =~ /....foo/ {
   // foo specific grok here
} else {
   // general grok
}