grok - как найти строку в кавычках

Я пытаюсь получить вывод из файла журнала nginx и отправить его в logstash.

10.1.10.20 - bob [14/Feb/2014:18:57:05 +0000] “POST /main/foo.git/git-upload-pack HTTP/1.1” 200 3653189 “-” “git/1.8.3.4 (Apple Git–47)” 

Грок отлично находит первые 3 слова.

10.1.10.20 - bob [14/Feb/2014:18:57:05 +0000]

%{IPV4:user_ip} - %{USERNAME:user_name} \[%{HTTPDATE:time_local}\]

Грок отлично находит 3-е и 4-е слова.

[14/Feb/2014:18:57:05 +0000] “POST /main/foo.git/git-upload-pack HTTP/1.1”

\[%{HTTPDATE:time_local}\] %{QUOTEDSTRING:request}

Однако, когда я объединяю их и пытаюсь найти все 4, grok говорит, что результатов нет (используя http://grokdebug.herokuapp.com/ для тестирования)

10.1.10.20 - bob [14/Feb/2014:18:57:05 +0000] “POST /main/foo.git/git-upload-pack HTTP/1.1” 

%{IPV4:user_ip} - %{USERNAME:user_name} \[%{HTTPDATE:time_local}\]  %{QUOTEDSTRING:request}
#not found

Кто-нибудь знает, как получить строку в кавычках в приведенном выше примере?

Я новичок в grok, поэтому, возможно, я неправильно подхожу к этому.

Обновить

Интересно, что если я использую следующую строку журнала, а затем вручную ввожу URL-адрес, он работает

 bob 14/Feb/2014:18:57:05 +0000 "herp"
 #Once herp works, replace herp, with POST
 bob 14/Feb/2014:18:57:05 +0000 "POST"
 #Once POST works, keep expounding until the whole thing is in place
 autobuild 14/Feb/2014:18:57:05 +0000 "POST /main/builder.git/git-upload-pack HTTP/1.1"

person spuder    schedule 15.02.2014    source источник
comment
Привет, вам удалось отправить данные в elasticsearch с правильным форматом типа (например, поле time_local распознано как дата)?   -  person Alexandre Mélard    schedule 11.07.2014


Ответы (3)


"POST /main/builder.git/git-upload-pack HTTP/1.1" по шаблону

"%{WORD:verb} %{URIPATHPARAM:request} HTTP/%{NUMBER:httpversion}"

person HDT    schedule 01.12.2014

Процесс публикации в переполнении стека выявил проблему.

Если вы посмотрите внимательно, двойные кавычки анализируются по-разному.

"POST 

vs

“POST

Ручной ввод двойной кавычки решает проблему

person spuder    schedule 15.02.2014

Также вы можете использовать это выражение для случаев, когда журнал изменяется:

"%{WORD:verb}(?:| %{URIPATHPARAM:request})(?:| HTTP/%{NUMBER:httpversion})"

он совпадает с:

"POST /main/builder.git/git-upload-pack HTTP/1.1"

or

"POST /main/builder.git/git-upload-pack"

or

"POST"

попытайся.. ;)

person Pablo Garcia    schedule 21.07.2015