Logstash - Grok не разбирается, даже если Grokdebugger доволен

Я в растерянности и, вероятно, должен отойти от проблемы. Может ли кто-нибудь помочь определить, чего мне не хватает. Logstash продолжает показывать "_grokparsefailure". Почесать голову ???

используя logstash logstash-1.3.3-flatjar.jar

Пример файла журнала

proxy.ian.com - [email protected] [24 / Фев / ​​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}" ]
         }
     }
}

person IanN    schedule 14.03.2014    source источник


Ответы (1)


Ваш шаблон включает " символов, которые, очевидно, рассматриваются grokdebug как буквальные символы. Когда Logstash читает ваш файл конфигурации, эти кавычки имеют другое семантическое значение (они отмечают начало или конец строки).

ОБНОВЛЕНИЕ: оказывается, что экранирование кавычек в Logstash плохо документировано и, возможно, содержит ошибки. Я обновлю, если найду лучшее решение, но пока похоже, что вы можете использовать ' одинарные кавычки для начала / завершения ваших строк, что позволит вам свободно использовать " двойные кавычки внутри них.

Это работает для меня:

input {
    generator {
        type => 'ErcAccess'
        message => 'proxy.ian.com - [email protected] [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{}
    }
}
person rutter    schedule 17.03.2014
comment
Да, я тоже так подумал и ускользнул от символов, но все еще получаю Grokparsefailures. Я даже удалил из файлов журнала в качестве попытки ... это также вернуло ту же проблему с ошибкой синтаксического анализа. - person IanN; 18.03.2014
comment
@IanN Я обновил свой ответ лучшим решением. Я все еще пытаюсь найти лучший общий ответ, но вышеприведенное работает для примера сообщения, которое вы дали. - person rutter; 25.03.2014