Я пытаюсь получить вывод из файла журнала 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"