スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Railsの本番環境用ログ設定

Railsで本番環境を想定したログの設定例です。
ログをためすぎてディスクを圧迫しないことと、
必要なログは残しておくこと、
重要なログはメールで送信することを想定しています。
この設定ではRailsを動かす仕組みとtd-agentだけあればいいので
シンプルなサーバ構成になっています。

以下の手順で行います。
1. ログローテート
2. ログから改行を取り除く
3. 必要なものだけメール送信

1. ログローテート
Loggerのコンストラクタでは第二引数に残すファイルの数
第三引数にログのファイルサイズが指定できます。

vi config/environments/production.rb

config.logger = Logger.new("log/production.log", 10, 1 * 1024 * 1024)

2. ログから改行を取り除く
Fatalエラーが発生した場合では通常のログだと改行されて出力されます。
それだと後でメールを送るための仕組みがうまく検知できないので、改行を取り除きます。

vi config/environments/production.rb

config.log_formatter = ::Logger::Formatter.new

vi config/environment.rb

class Logger
class Formatter
def call(severity, time, progname, msg)
if msg.class.to_s == "String"
msg = msg.gsub(/\n/, "")
if msg.present? && !msg.include?("assets") && !msg.include?("erb")
format = "[%s %d] %5s -- %s: \'%s\'\n"
format % ["#{time.strftime('%Y-%m-%dT%H:%M:%S')}.#{'%06d' % time.usec.to_s}",$$, severity, progname, msg2str(msg)]
end
end
end
end
end

3. 必要なものだけメール送信
td-agentを使ってログファイルを監視して
必要なものだけメールで送信します。
メールの送信はAWSのSNSを利用しています。

・td-agentにプラグイン追加
sudo /usr/sbin/td-agent-gem update
sudo /usr/sbin/td-agent-gem clean
sudo /usr/sbin/td-agent-gem install fluent-plugin-tail-ex
sudo /usr/sbin/td-agent-gem install fluent-plugin-sns
sudo /usr/sbin/td-agent-gem install fluent-plugin-rewrite-tag-filter

・td-agentの設定
sudo vi /etc/td-agent/td-agent.conf
<source>
type tail_ex
path /home/ubuntu/var/www/apps/web/log/*.log
pos_file /var/log/td-agent/web.log.pos
tag web.raw
format /\[(?<time>[^ ]*) (?<pid>[^\]]*)\] +(?<level>[^ ]+) -- : (?<content>.*)$/
time_format %Y-%m-%dT%H:%M:%S.%L
refresh_interval 300
</source>
<match web.raw>
type rewrite_tag_filter
rewriterule1 content ActionController::RoutingError clear
rewriterule2 level FATAL web.error
rewriterule3 level ERROR web.error
rewriterule4 level WARN web.error
rewriterule5 level .+ clear
</match>
<match web.error>
type sns
sns_topic_name web
aws_key_id xxxxxxxxxx
aws_sec_key xxxxxxxxxx
sns_endpoint sns.ap-northeast-1.amazonaws.com
sns_subject [web]error occerd
</match>
<match clear>
type null
</match>
スポンサーサイト

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。