share facebook facebook 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)上での開発・運用を軸とした事業の、業務の中心として活躍。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。