以前、FluentdでWeb Storage Archiveパターンの記事で、FluentdでsyslogをS3にアーカイブする方法を
紹介しました。

今回は、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の設定ファイルは、下記のようになりました。


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


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

このままではパーミッションの問題が発生したので、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"}

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら