デフォルトのcombinedログ形式をパースするfluentdのformat

デフォルトのcombinedログ形式をパースするfluentdのformatメモ。


カスタマイズしたcombined形式用のformatを書く時に、デフォルトのcombined形式用のformatがあると便利なので書いてみました。



デフォルトのcombinedログ形式をパースするfluentdのformat


デフォルトのcombinedログ形式用のfluentd formatはこんな感じです。


format /^(?<host>[^ ]*) [^ ]* (?<user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+)(?: +(?<path>[^ ]*) +\S*)?" (?<status>[^ ]*) (?<size>[^ ]*)(?: "(?<referer>[^\"]*)" "(?<agent>[^\"]*)")?$/

time_format %d/%b/%Y:%H:%M:%S %z

ログのフォーマット自体は同じでも、日時形式だけ「0000/00/00 00:00:00」のように変更しているサーバー管理者はそれなりにいると思います。その場合のtime_formatは一例として下記のようになります。


time_format %Y/%m/%d %H:%M:%S

httpd.confでの設定はこんな感じです。デフォルトのcombined形式です。


LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

/var/log/httpd/access_logの実際のログはこんな感じです。


123.456.789.123 - - [18/May/2013:05:46:41 +0900] "GET / HTTP/1.1" 200 61282 "http://hivecolor.com/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31"

著者プロフィール
Webサイトをいくつか作っています。
著者プロフィール