2012年12月14日金曜日

Fluentdで"Web Storage Archiveパターン"

スズキです。

CDPネタです。今回の対象は「Web Storage Archiveパターン」です。


この「実装」の部分で、下記のような記載があります。
Fluentdと、そのAmazon S3 Output Pluginを利用して短いスパンでログを
S3にアーカイブすることも可能。
実際に試してみました。(下記のようにFluentdがインストールされていることを前提とします)
CentOS6にFluentdをインストール

利用するディレクトリの準備


とりあえず"git"から引っ張ってくると簡単ですが、
# yum -y install git
# cd /opt/
# git clone https://github.com/suz-lab/suz-lab-centos-ami.git suz-lab
Initialized empty Git repository in /opt/suz-lab/.git/
remote: Counting objects: 50, done.
remote: Compressing objects: 100% (38/38), done.
remote: Total 50 (delta 11), reused 43 (delta 6)
Unpacking objects: 100% (50/50), done.
まあ、下記のディレクトリが準備されていればOKです。
  • /opt/suz-lab/etc/rsyslog/
  • /opt/suz-lab/etc/td-agent/
  • /opt/suz-lab/var/log/rsyslog/
  • /opt/suz-lab/var/lib/td-agent/
  • /opt/suz-lab/var/lib/td-agent/pos/
  • /opt/suz-lab/var/lib/td-agent/buf/

"rsyslog"の調整


"rsyslog"が管理するすべとのログを一つのファイル(all.log)に出力するようにします。
# cat /etc/rsyslog.conf
...
$IncludeConfig /opt/suz-lab/etc/rsyslog/*.conf
# cat /opt/suz-lab/etc/rsyslog/all.conf 
*.*    /opt/suz-lab/var/log/rsyslog/all.log
# /etc/init.d/rsyslog restart
システムロガーを停止中:                                    [  OK  ]
システムロガーを起動中:                                    [  OK  ]
# chown td-agent.td-agent /opt/suz-lab/var/log/rsyslog/all.log

"Amazon S3 Output Plugin"のインストール


"fluentd"専用のruby(gem)でインストールします。
# /usr/lib64/fluent/ruby/bin/gem install fluent-plugin-s3
Fetching: aws-sdk-1.7.1.gem (100%)
Fetching: fluent-plugin-s3-0.2.5.gem (100%)
Successfully installed aws-sdk-1.7.1
Successfully installed fluent-plugin-s3-0.2.5
2 gems installed
Installing ri documentation for aws-sdk-1.7.1...
Installing ri documentation for fluent-plugin-s3-0.2.5...
Installing RDoc documentation for aws-sdk-1.7.1...
Installing RDoc documentation for fluent-plugin-s3-0.2.5...
# cat /etc/td-agent/td-agent.conf
include /opt/suz-lab/etc/td-agent/*.conf
# chown -R td-agent.td-agent /opt/suz-lab/var/lib/td-agent

Fluentdの設定ファイルの作成(調整)


設定ファイルに"rsyslog"の出力をS3にアーカイブする記述を追加します。
# cat /opt/suz-lab/etc/td-agent/rsyslog-s3.conf 
<source>
    type     tail
    format   syslog
    path     /opt/suz-lab/var/log/rsyslog/all.log
    pos_file /opt/suz-lab/var/lib/td-agent/pos/tail.syslog.pos
    tag      tail.syslog
</source>
<match tail.syslog>
    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              syslog/
    buffer_path       /opt/suz-lab/var/lib/td-agent/buf/s3.syslog
    time_slice_format %Y/%m/%d/ip-10-120-29-120/%H
    flush_interval    10m
</match>

Fluentdの起動をログのS3へのアーカイブの確認


Fluentdを起動して
# /etc/init.d/td-agent start

少し時間がたつ(10分)とS3にログがアーカイブされていることがわかります。


次は有効期限の設定とGlacierへの移動かな?
--------
http://www.suz-lab.com

0 コメント: