今回は、先日書籍(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)監修のもと掲載しています。
元記事は、こちら