logstash无法匹配grok筛选器

logstash无法匹配grok筛选器,logstash,Logstash,我卡住了。我不明白为什么grok不能匹配logstash下的简单正则表达式。 grok作为一个独立的东西工作得很好。 对我来说唯一有效的模式是“*”其他一切都失败了 $ cat ./sample2-logstash.conf input { stdin {} } filter { grok { match => [ "message1", "foo.*" ] add_tag => [ "this_is_foo" ] t

我卡住了。我不明白为什么grok不能匹配logstash下的简单正则表达式。 grok作为一个独立的东西工作得很好。 对我来说唯一有效的模式是“*”其他一切都失败了

$ cat ./sample2-logstash.conf
input {
    stdin {}
}

filter {
    grok {
        match => [ "message1", "foo.*" ]
        add_tag => [ "this_is_foo" ]
        tag_on_failure => [ "STUPID_LOGSTASH" ]
    }
}

output {
    stdout { codec => json_lines }
}
以下是输出:

$ echo "foo" |~/bin/logstash-1.4.0/bin/logstash -f ./sample2-logstash.conf 
{"message":"foo","@version":"1","@timestamp":"2014-05-07T00:32:49.915Z","host":"serega-sv","tags":["STUPID_LOGSTASH"]}
看来我没能在logstash做点什么因为香草果酱很好用:

$ cat grok.conf
program {
    file "./sample.log"
    match {
        pattern: "foo.*"
        reaction: "LINE MATCHED! %{@LINE}"
    }
}
普莱恩·格罗克的产量:

$ echo "foo" > ./sample.log; grok -f grok.conf 
LINE MATCHED! foo

谢谢

您的配置有错误。grok匹配字段是
消息
,而不是
消息1

然后,在logstash grok中有一个示例演示如何使用grok。我想你误解了。例如,如果您的日志是

55.3.244.1 GET /index.html 15824 0.043
logstash的grok模式是

%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}

对于
%{IP:client}
,第一个参数(IP)是grok模式,第二个参数(client)是要放置此消息的字段。

您的配置有错误。grok匹配字段是
消息
,而不是
消息1

然后,在logstash grok中有一个示例演示如何使用grok。我想你误解了。例如,如果您的日志是

55.3.244.1 GET /index.html 15824 0.043
logstash的grok模式是

%{IP:client} %{WORD:method} %{URIPATHPARAM:request} %{NUMBER:bytes} %{NUMBER:duration}

对于
%{IP:client}
,第一个参数(IP)是grok pattern,第二个参数(client)是要放置此消息的字段。

所有@Ben Lim说的内容。文档的下一节将展示如何将语义应用于通用正则表达式语法:

filter {
  grok {
    match => [ "message", 
      "^(?<ip>\S+) (?<verb>\S+) (?<request>\S+) (?<bytes>\S+) (?<delay>\S+)$"
    ] 
  }
}
过滤器{
格罗克{
匹配=>[“消息”,
“^(?\S+(\S+)(\S+)(\S+)(\S+)$”
] 
}
}

本林说的一切。文档的下一节将展示如何将语义应用于通用正则表达式语法:

filter {
  grok {
    match => [ "message", 
      "^(?<ip>\S+) (?<verb>\S+) (?<request>\S+) (?<bytes>\S+) (?<delay>\S+)$"
    ] 
  }
}
过滤器{
格罗克{
匹配=>[“消息”,
“^(?\S+(\S+)(\S+)(\S+)(\S+)$”
] 
}
}

只是想知道,如果我将“foo.*”更改为“.*”,为什么同样的东西即使在“message1”中也能正常工作?只是想知道,如果我将“foo.*”更改为“.*”,为什么同样的东西即使在“message1”中也能正常工作?