logstash 如果字段存在则 grok

logstash if field exists then grok

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

我使用的第一个 grok 是

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

效果很好。但是如果 "name" 字段是 "foo"

,我希望它能够过滤得更多
if [name] == "foo" {
grok {
match => [
"message", ".....%{NOTSPACE:name} %{NOTSPACE:object1} %{NOTSPACE:object2}" 
]
}

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

最简单的方法是在理解任何内容之前对消息使用模式匹配。

例如:

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