Happy Growth Engineer

成長と幸せな働き方の両立をするために役に立つ

S3 にログを保存

目的

  • サーバが落ちたとき、アクセスログなどを損失させない(今回1時間に1回だから少しは仕方ないと判断しています)
  • 後々解析でもできるようにする
  • イメージで起動させた後から、ログを S3 に保存し始めるため、Auto Scale でも有効になる
  • (Rails の logger で出力されるものを収集)

事前準備

  • S3 のバケット
  • S3 アクセス用ユーザの作成

セットアップ

td-agent のインストール
$ curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
conf 編集
$ sudo mkdir /var/log/td-agent/s3
$ sudo vi /etc/td-agent/td-agent.conf
<source>
  type tail
  path [保存したいログ]
  pos_file /var/log/td-agent/buffer/sample_application.log.pos
  format multiline
  format_firstline /^.,/
  format1 /^., \[(?<time>[^\.]+).+\][ ]+(?<level>[^ ]+) -- :(?<message>.*)$/
  time_format %Y-%m-%dT%H:%M:%S
  tag sample_application.access
</source>

<match sample_application.access>
  type s3
  output_tag false
  output_time false
  include_time_key true
  include_tag_key true
  time_format %Y-%m-%d %H:%M:%S
  aws_key_id [AWS のアクセスキー]
  aws_sec_key [AWS のシークレットキー]
  s3_bucket [保存先バケット名]
  s3_region [保存先リージョン名]
  path [ログディレクトリ]/
  buffer_path /var/log/td-agent/s3
  time_slice_format "#{ENV['HOSTNAME']}/%Y%m%d/sample_application.log"
  time_slice_wait 10m
  flush_interval 1h
</match>
起動
$ sudo /etc/init.d/td-agent start
これも設定
$ sudo chkconfig td-agent on