更新情報
- S3 プラグインは別途インストールが必要と記載しておりましたが、@repeatedly さんのご指摘により S3 プラグインは標準で同梱されていることを確認致しました。誤った情報を記載してしまい申し訳ございませんでした...。また、@repeatedly さんご指摘有難う御座いました。
メモ
- fluentd についてはこちら
環境
- Apache 環境
- Amazon EC2(Amazon Linux)
手順
yum のリポジトリを設定する
vim /etc/yum.repos.d/td.repo
[treasuredata] name=TreasureData baseurl=http://packages.treasure-data.com/redhat/$basearch gpgcheck=0
td-agent のインストール
yum install td-agent
fluentd の S3 プラグインをインストール
※td-agent にはデフォルトで S3 プラグインは同梱されていますので、下記の手順は不要です。
/usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-s3
td-agent.conf を設定す
ログファイルをサーバーごとに書き出す為に td-agent.conf をテンプレートから書き出すようにテンプレートファイルにて設定する。
vim td-agent.conf.tmpl
<source> type tail format apache path /log/apache/xxx.xxxx.xxxx.log tag apache.access pos_file /tmp/td-agent/apache.pos </source> <match apache.access> type s3 aws_key_id xxxxxxxxxxxxxxxxxxxx aws_sec_key yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy s3_bucket zzzzzzzzzzzzzz s3_endpoint xyzxyzxyz.amazonaws.com path logs/ buffer_path /var/log/fluent/s3 time_slice_format %Y%m%d/${hostname}-%H time_slice_wait 10m #flush_interval 5s </match>
/etc/init.d/td-agent に 前述の tmpl ファイルをサーバーごとに書き換える処理をする。(. /etc/init.d/functions 直後に記載する)
sed -e "s/\${hostname}/`hostname`/g" /etc/td-agent/td-agent.conf.tmpl > /etc/td-agent/td-agent.conf
を td-agent を自動起動するように設定して、td-agent を起動する。
chkconfig td-agent on /sbin/service td-agent start
ハマった点
- source ディレクティブにてログの path が不適切だった
- pos_file の設定が未設定だったので warning が /var/log/td-agent.log に出力されていた
- s3_endpoint の設定が不適切だったので EC2 から S3 にアクセス出来ない
そもそも fluentd の S3 プラグインがインストールされていなかった
すったもんだがあったが...サイトに適当にアクセスして暫くすると下記の通り S3 に圧縮されたログが保存されている。