Logstash から Elasticsearch にログを送って Kibana で表示したけどアクセス数が変?
よく見る Apache アクセスログ用 grokフィルタ:
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
https://github.com/hpcugent/logstash-patterns/blob/master/files/grok-patterns
によると、
%{COMBINEDAPACHELOG}
の内容は、読んだまんま combined ログフォーマットで、
%{COMMONAPACHELOG} %{QS:referrer} %{QS:agent}
と同等。ログの最後にリファラとAgentがついてない行は無視されてしまうぽい。
%{COMMONAPACHELOG}
の方の内容はこれ:
%{IPORHOST:clientip} %{HTTPDUSER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "(?:%{WORD:verb} %{NOTSPACE:request}(?: HTTP/%{NUMBER:httpversion})?|%{DATA:rawrequest})" %{NUMBER:response} (?:%{NUMBER:bytes}|-)
ログの例:
123.45.78.9 - - [14/Nov/2018:00:00:04 +0900] "GET / HTTP/1.1" 200 18696
%{} の順番とログを見比べてみよう
オリジナルのログ出力にしてあるならその通りに組み立てればOK
Grok debugger
上の箱にログを貼り付けて下に grok パターンを書くと、何が返るかを表示してくれる。
%{COMMONAPACHELOG}
の例: