デフォルトの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"