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)”
Grock は最初の 3 つの単語を正しく見つけることができます
10.1.10.20 - bob [14/Feb/2014:18:57:05 +0000]
%{IPV4:user_ip} - %{USERNAME:user_name} \[%{HTTPDATE:time_local}\]
Grok は 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
上記の例で引用符で囲まれた文字列を取得する方法を知っている人はいますか?
私はグロクが初めてなので、おそらくこれに正しく取り組んでいません。
アップデート
興味深いことに、次のログ行を使用して手動で 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"