0

我很茫然,可能应该远离这个问题,任何人都可以帮助发现我所缺少的。Logstash 不断抛出“_grokparsefailure”。挠头???

使用logstash logstash-1.3.3-flatjar.jar

日志文件示例

proxy.ian.com - ian@IAN.COM [24/Feb/2014:11:16:49 -0500] "GET /docs/en-US/Guide/+ HTTP/1.1" 404 285 " https://ian .com/docs/en-US/Guides/html/Guide " "Mozilla/5.0 (X11; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0"

我的logstash过滤器

Filter {
   if [type] == "ErcAccess" {
    grok {
    match => ["message", "%{IPORHOST:clientip} - %{USER:auth}@%{URIPROTO}.%{WORD:domain} \[%{HTTPDATE:timestamp}\] "%{WORD:httpmethod} %{NOTSPACE:referrer} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} %{NUMBER:bytes} "%{NOTSPACE:request}" %{QS:UserAgent}" ]
         }
     }
}
4

1 回答 1

4

您的模式包括字符,这些字符显然被grokdebug"视为文字字符。当 Logstash 读取您的配置文件时,这些引号字符具有不同的语义含义(它们标记字符串的开头或结尾)。

更新:事实证明,Logstash 的引号转义记录不充分,并且可能存在错误。如果我找到更好的解决方案,我会更新,但现在看起来您可以使用'单引号来开始/结束您的字符串,这将允许您"在其中自由使用双引号。

这对我有用:

input {
    generator {
        type => 'ErcAccess'
        message => 'proxy.ian.com - ian@IAN.COM [24/Feb/2014:11:16:49 -0500] "GET /docs/en-US/Guide/+ HTTP/1.1" 404 285 "https://ian.com/docs/en-US/Guides/html/Guide" "Mozilla/5.0 (X11; Linux x86_64; rv:27.0) Gecko/20100101 Firefox/27.0"'
        count => 1
    }
}

filter {
  if [type] == 'ErcAccess' {
    grok {
      match => ['message', '%{IPORHOST:clientip} - %{USER:auth}@%{URIPROTO}.%{WORD:domain} \[%{HTTPDATE:timestamp}\] "%{WORD:httpmethod} %{NOTSPACE:referrer} HTTP/%{NUMBER:httpversion}" %{NUMBER:response} %{NUMBER:bytes} "%{NOTSPACE:request}" %{QS:UserAgent}' ]
    }
  }
}

output {
    stdout {
        codec => rubydebug{}
    }
}
于 2014-03-17T20:46:00.677 回答