Errbit - Railsアプリケーションの本番エラーをHerokuで管理、メール通知する【無料枠】


サーバで稼働しているWebアプリケーションのエラー監視して、エラーが出たら通知してくれるツールErrbitの紹介です。この分野で有名な有料のサービスAirbrakeのオープンソース版です。

また今回はこのサービスをHeroku上で動かします。Herokuの無料枠内で運用できるのでコストパフォーマンスも抜群だと思います!

Ruby 2.1.4で動作確認しました!

errbit/errbit · GitHub


🚌 Errbitスクリーンショット

まずは、Errbitのスクリーンショットです。このスクリーンショットは左上から順番にアプリケーション一覧アプリケーションのエラー情報エラー情報のサマリーエラーのトレース情報です。

Errbitの代表的な機能は次の3つです。

airbrakeのgemを使って、複数アプリのエラー情報を収集・表示
エラーが発生したらユーザーにメール通知
エラー発生時の送信先を管理

このほかにもRedmineやGitHubへのissueへの登録や、Gtalk、Campfireなどへのエラー通知の機能もあるみたいです。

またRubyだけではなく、PHP/Pythonにも対応しているっぽいです。

🗽 Herokuをはじめて利用する場合

もし、今回初めてHerokuを使う場合は拙著のRails4でheroku Pushまでの最短手順 の「Herokuユーザー登録」と「ローカル環境設定」を実行してください。

🎂 ErrbitのHerokuへの導入手順

ローカルにErrbitのソースをダウンロード。

git clone http://github.com/errbit/errbit.git

Gemfileの次のコードのRubyのバージョン指定の部分を修正。

ruby '2.1.2'

続いてBundle installを実行。

bundle install

db/seeds.rbのログイン設定を修正。

admin_email = "xxx@example.com"
admin_pass = 'password'

アプリケーション名をHerokuに登録。

xxxxの部分に自分のアプリケーション名を指定してください。アプリケーション名は早いもの順ですので、他のユーザーとかぶっていたらエラーが出ます。被らない名前にしてください。

heroku create xxxx

アプリケーションの登録が成功すると、http://xxxx.herokuapp.com/というURLがもらえます。これが自分のErrbitのURLになります。

(ちなみに、この時点ではまだ見れないと思います)

続いてアドオンの有効化と各種設定を行います。

heroku addons:add mongolab:sandbox
heroku addons:add sendgrid:starter
heroku config:add HEROKU=true
heroku config:add SECRET_TOKEN="$(bundle exec rake secret)"
# heroku createで作成されたホスト名に置き換え
heroku config:add ERRBIT_HOST=xxxx.herokuapp.com
# エラーメールのFrom(振り分けし易いメアドにするのがオススメ)
heroku config:add ERRBIT_EMAIL_FROM=example@example.com

設定画完了したら、Herokuにpushします。

git add . -A && git commit -m 'first commit'
git push heroku master

さらに、seedファイル(DBの初期設定データ)の読み込みを行います。

heroku run bundle exec rake RAILS_ENV=production db:seed

mongo DBにインデックスを追加。

heroku run bundle exec rake RAILS_ENV=production db:mongoid:create_indexes

あとは次のコマンドを実行すると、ブラウザにerrbitのページが表示されます。

heroku open

🐠 ErrbitにWebアプリケーションを登録

ここまで、HerokuのErrbitにアクセスできるようになりました。続いて、Errbitでエラーを収集したいWebアプリケーションを登録していきます。

ブラウザでhttp://example-errbit.herokuapp.com/を開くとログインが出るので、先ほどGit pushした時に出たログインIDとパスワードを入力してください。

ログインできたらUrersタブ => ログインユーザー名 => editに進んでログインIDとパスワードを自分用に変更してください。(不正アクセスを防止するため)

次に、Appsタブ => Add new appsに進んで、Errbitでエラーを収集したいWebアプリケーションを登録してください。

Errbit — Add App

Webアプリケーションの登録が完了したら、設定が書かれたページが出てきます。次のセクションで使うのでメモしておいてください。

Errbit — like coupon

🚜 Webアプリケーション側の設定

続いて、エラーが発生したら通知をしてほしい側のWebアプリケーションの設定を行います。

Gemfileに以下を追加して、bundle installを実行してください。

# Errbitと連携
gem 'airbrake'

続いて、Railsの場合はconfig/initializers/errbit.rbを作成して以下を追加します。

ちなみに、Pure RubyのスクリプトでAirbrakeを使いたい場合もそれも同じコードで大丈夫でした!

Airbrake.configure do |config|
config.api_key = 'Errbitにアプリを登録完了するともらえます'
config.host = 'example-errbit.herokuapp.com'
config.port = 80
config.secure = config.port == 443
end

これで設定は完了です。これでエラーが発生したら、Userタブで登録したメールアドレスにメールが届くようになります。ちなみに、テストでエラーを発生させた時の結果はしたようになりました。

Errbit

errbit/errbit · GitHub

😸 アイドリング状態をなくす

Herokuは1時間以上アクセスがないとアイドリング状態になりますが、その際にAPIをたたくとうまく拾えない場合があります。
そんな時には、NewRelicのAvailability Monitorを使いましょう。

# New Relicの追加
heroku addons:add newrelic:stark
# New Relicの画面をブラウザで表示
heroku addons:open newrelic

New Relicの画面からlicense keyを生成してnewrelic.ymlをダウンロード。./configにコピー。

また、Gemfileに以下を追加してbundle install

gem 'newrelic_rpm'

変更点をHerokuにPush。

git add . -A && git commit -m 'add New Relic gem' && git push heroku master
# New Relicの画面をブラウザで表示
heroku addons:open newrelic

New Relicでアプリケーションの中の『Availability Monitor』に進んで、監視対象のURLを設定。

こうすると、Herokuに定期的にアクセスしてくれるようになるので、

🎃 参考リンク

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

無料でアプリケーションのエラーを賢く管理する (Errbit on heroku) - quattro_4’s diary

🤔 変更来歴

(2013/12/29 16:25) Ruby 2.1対応

(2014/06/29 16:00) Ruby 2.1.2対応、記述修正

(2014/11/03 09:30) 説明書きを追記

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)