Webシステムでエラーが発生した場合、その情報を即座に・詳細に開発者に伝えるシステムは、とても重要です。
原始的にはexception_notification、定番どころではAirbrake(旧HopToad)があります。
Airbrakeは、エラーの概要やBacktrace, 発生時のセッション情報などの詳細をWebで管理でき、似たエラーをまとめてくれたり担当者へメールで通知してくれたり出来る、いたつくのサービスです。
ただ、値上げしてだいぶ敷居が高くなってしまったんですよね。プロジェクト3つで$25/monthかかり、しかもエラーが60日で消えてしまいます。
(僕は旧プランのまま$5/monthで使えていますが、これ以上プロジェクトを作れません・・・)
そこで、オープンソースのAirbrakeクローン、errbitを使ってみました。
https://github.com/errbit/errbit
インストール
インストールはREADME通りにやれば簡単です。
Ubuntu 12.04 Server (さくらのVPS)にインストールしました。Rubyはインストール済みです。
# 依存ライブラリインストール(root)
apt-get update
apt-get install mongodb install libxml2 libxml2-dev libxslt-dev libcurl4-openssl-dev
# リポジトリ持ってくる
git clone https://github.com/errbit/errbit.git
cd errbit
# インストール
bundle install
rake errbit:bootstrap
# 起動
unicorn_rails -c config/unicorn.rb -D
# あとは適当にnginxでリバースプロキシ
なお、rake errbit:bootstrap
のときに、ログインIDとパスワードが表示されます。
見逃したら、生成ルールはdb/seeds.rbに書いてあるのでそれを参照するか、rails cでUser.firstを書き換えてしまえば良いでしょう。
ログインしたら、使用するプロジェクトを「Add a New App」で作ります。
作成したら、API Keyをメモしておきます。
クライアントインストール
お次は、使用するRailsプロジェクトでクライアントをインストールします。
これは、airbrakeがそのまま使えます。
# Gemfile
gem 'airbrake'
# config/initializers/errbit.rb
Airbrake.configure do |config|
config.api_key = '上記でメモしたAPI Key'
config.host = 'インストールしたサーバURL'
config.port = 80
config.secure = config.port == 443
end
# bash
bundle install
以上で設定は終わりです。
productionモードで起動して、エラーが発生すると、自動的にerrbitにエラーが蓄積され、メンバーにメールで通知が届きます。
設定次第で、redmineなどのissue trackerに自動で報告したりできます。airbrakeはlighthouseだけだったので、これは地味に助かります。
これだけ便利なツールがオープンソースで使えるのはすばらしいですね!
このシステム自体が落ちてしまうと元も子もないので、Uptimerなどに監視させておくと良いかもしれません。