サーバで稼働しているWebアプリケーションのエラー監視して、エラーが出たら通知してくれるツールErrbitの紹介です。この分野で有名な有料のサービスAirbrakeのオープンソース版です。
また今回はこのサービスをHeroku上で動かします。Herokuの無料枠内で運用できるのでコストパフォーマンスも抜群だと思います!
Ruby 2.1.4で動作確認しました!
🎉 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" |
アプリケーション名をHerokuに登録。
xxxxの部分に自分のアプリケーション名を指定してください。アプリケーション名は早いもの順ですので、他のユーザーとかぶっていたらエラーが出ます。被らない名前にしてください。
heroku create xxxx |
アプリケーションの登録が成功すると、http://xxxx.herokuapp.com/
というURLがもらえます。これが自分のErrbitのURLになります。
(ちなみに、この時点ではまだ見れないと思います)
続いてアドオンの有効化と各種設定を行います。
heroku addons:add mongolab:sandbox |
設定画完了したら、Herokuにpushします。
git add . -A && git commit -m 'first commit' |
さらに、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アプリケーションを登録してください。
Webアプリケーションの登録が完了したら、設定が書かれたページが出てきます。次のセクションで使うのでメモしておいてください。
🚜 Webアプリケーション側の設定
続いて、エラーが発生したら通知をしてほしい側のWebアプリケーションの設定を行います。
Gemfile
に以下を追加して、bundle install
を実行してください。
# Errbitと連携 |
続いて、Railsの場合はconfig/initializers/errbit.rb
を作成して以下を追加します。
ちなみに、Pure RubyのスクリプトでAirbrakeを使いたい場合もそれも同じコードで大丈夫でした!
Airbrake.configure do |config| |
これで設定は完了です。これでエラーが発生したら、Userタブで登録したメールアドレスにメールが届くようになります。ちなみに、テストでエラーを発生させた時の結果はしたようになりました。
🍣 アイドリング状態をなくす
Herokuは1時間以上アクセスがないとアイドリング状態になりますが、その際にAPIをたたくとうまく拾えない場合があります。
そんな時には、NewRelicのAvailability Monitorを使いましょう。
# New Relicの追加 |
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でアプリケーションの中の『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) 説明書きを追記