2012年12月23日日曜日

Apacheのログ(アクセス/エラー)をS3にアーカイブ

スズキです。

以前、Fluentdで"syslog"をS3にアーカイブする方法を紹介しました。

Fluentdで"Web Storage Archiveパターン"
今回はApacheの(アクセス/エラー)ログをS3にアーカイブしてみます。

エラーログをS3にアーカイブ


これは、そもそもApacheのエラーログを"syslog"に出力できれば、上記の方法で終了です。

"syslog"への出力は設定ファイル(/etc/httpd/conf/httpd.conf)を下記のように
することで可能です。
...
#ErrorLog logs/error_log
ErrorLog syslog
...
Apacheをリスタートすると"syslog"にApacheのエラーログが下記のように出力されます。
...
Dec 23 16:55:43 ip-10-100-0-236 httpd[22042]: [error] [client xxx.xxx.xxx.xxx] Directory index forbidden by Options directive: /var/www/html/
Dec 23 16:55:43 ip-10-100-0-236 httpd[22045]: [error] [client xxx.xxx.xxx.xxx] File does not exist: /var/www/html/favicon.ico

もう"syslog"の世界なので、前述した方法でFluentdがS3にアーカイブしてくれます。

アクセスログをS3にアーカイブ


エラーログとは異なり、アクセスログを"syslog"に出力する仕組みはありません。
(パイプなどで外部プログラムを利用することで出力することは可能です)

ただ、幸いにもFluentdの"tail"のフォーマットには"syslog"以外に"apache"も標準で
用意されています。ですので、Apacheのアクセスログは直接Fluentdが"tail"して、
S3にアーカイブするようにします。

Fluentdの設定ファイルは、こんな感じになりました。
<source>
    type     tail
    format   apache
    path     /var/log/httpd/access_log
    pos_file /opt/suz-lab/var/lib/td-agent/pos/tail.apache.pos
    tag      tail.apache
</source>
<match tail.apache>
    type s3
    aws_key_id        ACCESS_KEY
    aws_sec_key       SECRET_KEY
    s3_bucket         log2.suz-lab.com
    s3_endpoint       s3-ap-northeast-1.amazonaws.com
    path              apache/
    buffer_path       /opt/suz-lab/var/lib/td-agent/buf/s3.apache
    time_slice_format %Y/%m/%d/ip-10-100-0-236/%H
    flush_interval    10m
</match>
このままだとパーミッションの問題が発生したので、Apacheのログ出力先ディレクトリの
パーミッションも下記のように調整しました。
# chmod 755 /var/log/httpd/

すると、S3に次のようにアクセスログがアーカイブされるようになります。
2012-12-23T19:25:51+09:00 tail.apache {"host":"xxx.xxx.xxx.xxx","user":"-","method":"GET","path":"/","code":"403","size":"5039","referer":"-","agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.101 Safari/537.11"}
2012-12-23T19:25:51+09:00 tail.apache {"host":"xxx.xxx.xxx.xxx","user":"-","method":"GET","path":"/favicon.ico","code":"404","size":"288","referer":"-","agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.101 Safari/537.11"}
2012-12-23T19:25:52+09:00 tail.apache {"host":"xxx.xxx.xxx.xxx","user":"-","method":"GET","path":"/favicon.ico","code":"404","size":"288","referer":"-","agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.101 Safari/537.11"}

そしてEMRのHiveで...
--------
http://www.suz-lab..com

0 コメント: