LoginSignup
2

More than 5 years have passed since last update.

LogstashのApache用grokフィルタ %{COMBINEDAPACHELOG}

Last updated at Posted at 2018-11-28

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} の例:
スクリーンショット 2018-11-28 18.38.21.png

リファラとagentがないと、%{COMBINEDAPACHELOG} ではエラー:
スクリーンショット 2018-11-28 18.38.45.png

リファラがある行はOK:
スクリーンショット 2018-11-28 18.40.52.png

複数条件はうまく読んでくれない...?
スクリーンショット 2018-11-28 18.44.41.png

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2