Tech Racho エンジニアの「?」を「!」に。
  • 開発

Railsのエラー管理はこれでOK!オープンソースのAirbrakeクローン、errbitを使ってみた

Webシステムでエラーが発生した場合、その情報を即座に・詳細に開発者に伝えるシステムは、とても重要です。

原始的にはexception_notification、定番どころではAirbrake(旧HopToad)があります。
Airbrakeは、エラーの概要やBacktrace, 発生時のセッション情報などの詳細をWebで管理でき、似たエラーをまとめてくれたり担当者へメールで通知してくれたり出来る、いたつくのサービスです。

高機能で使いやすいAirbrake

ただ、値上げしてだいぶ敷居が高くなってしまったんですよね。プロジェクト3つで$25/monthかかり、しかもエラーが60日で消えてしまいます。
(僕は旧プランのまま$5/monthで使えていますが、これ以上プロジェクトを作れません・・・)

そこで、オープンソースのAirbrakeクローン、errbitを使ってみました。
https://github.com/errbit/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などに監視させておくと良いかもしれません。


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。