share facebook facebook2 twitter menu hatena pocket slack

2013.01.28 MON

FluentdでWeb Storage Archiveパターン

鈴木 宏康

WRITTEN BY 鈴木 宏康

今回は、先日書籍(<a href=”http://www.cloudpack.jp/book-review/008.html”

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 
<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を起動して10分くらいすると、S3にログがアーカイブされていることがわかります。

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

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

鈴木 宏康

鈴木 宏康

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