share facebook facebook2 twitter menu hatena pocket slack

2013.01.28 MON

FluentdでWeb Storage Archiveパターン

鈴木 宏康

WRITTEN BY鈴木 宏康

今回は、先日書籍(Amazon Web Servicesクラウドデザインパターン設計ガイド)が発売された
Cloud Design Pattern(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.

しかし、下記のディレクトリが準備されていれば問題ありません。

/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 

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


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

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

Fluentdを起動して10分くらいすると、S3にログがアーカイブされていることがわかります。

# /etc/init.d/td-agent start

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

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。