如何检查logstash事件中是否存在字段?

时间:2014-05-14 09:56:02

标签: logstash

给出以下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选项,但我只想在遇到第一个模式时添加该字段。

1 个答案:

答案 0 :(得分:2)

您正在检查tags中的字段,但tags只是该事件的正常字段。你想要的是:

if [bar] {
    # ...
}