テクニカルグループの宮澤です。
今回は、fluentdとS3を使ってS3にログをアーカイブする手順を紹介します。
fluentdとは、ログを収集し格納するためのログ収集基盤ソフトウェアです。
fluentdに読み込まれたログはJSON形式に変換され、指定の場所にアウトプットされます。
※fluentdの安定稼働版はtd-agentとなります。
fluentdのインストール
リポジトリの追加
__| __|_ ) _| ( / Amazon Linux AMI ___|___|___| https://aws.amazon.com/amazon-linux-ami/2013.03-release-notes/ $ sudo vi /etc/yum.repos.d/td.repo --- [treasuredata] name=TreasureData baseurl=http://packages.treasure-data.com/redhat/$basearch gpgcheck=0
インストール
$ sudo yum install td-agent -y $ sudo service td-agent start $ sudo chkconfig td-agent on
プラグインの追加
今回は、タグを動的に扱うプラグインとプレースホルダを扱えるようにするプラグインをインストールします。$ sudo /usr/lib64/fluent/ruby/bin/fluent-gem update $ sudo /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-forest $ sudo /usr/lib64/fluent/ruby/bin/fluent-gem install fluent-plugin-config-expander
権限設定
fluentdを使って出力を行う、元ディレクトリの権限を変更します。$ sudo chgrp td-agent /var/log/httpd/ $ sudo chgrp td-agent /var/log/messages $ sudo chmod g+rx /var/log/httpd/ $ sudo chmod g+rx /var/log/messages
設定
$ sudo vi /etc/td-agent/td-agent.conf --- <source> type config_expander <config> type tail format apache pos_file /tmp/access.log.pos path /var/log/httpd/access_log tag ${hostname}/apache.access </config> </source> <source> type config_expander <config> type tail format /^[[^ ]* (?<time>[^]]*)] [(?<level>[^]]*)] (?<message>.*)$/ time_format %b %d %H:%M:%S pos_file /tmp/error.log.pos path /var/log/httpd/error_log tag ${hostname}/apache.error </config> </source> <source> type config_expander <config> type tail format syslog pos_file /tmp/syslog.pos path /var/log/messages tag ${hostname}/syslog.messages </config> </source> <match *.**> type forest subtype s3 <template> aws_key_id アクセスキーID aws_sec_key シークレットキー s3_bucket バケット名 s3_endpoint s3-ap-northeast-1.amazonaws.com path buffer_path /var/log/td-agent/buffer/${tag} time_slice_format %Y/%m/%d/${tag}/ec2-%Y-%m-%d-%H retry_wait 30s retry_limit 5 flush_interval 1s flush_at_shutdown true </template> </match>
ログの確認
S3を確認すると、以下のようにログが出力されていました。 また、S3のDirectoryツリーは以下のようになりました。バケット名 │ ├─Year │ └─Month | └─Day | └─Hostname | ├─apache.access │ │ └─ec2-2013-06-19-00_0.gz・・・ │ │ | ├─apache.error │ │ └─ec2-2013-06-19-00_0.gz・・・ │ │ │ └─syslog.messages │ └─ec2-2013-06-19-00_0.gz・・・