Web アプリケーションのエラー
Web アプリを開発、運用する時には様々なエラーが発生します。
アプリで発生したエラーに対処する場合、開発者のみなさんがまず確認するのは Web サーバのエラーログだと思います。 ただし Web アプリで使用する Web サーバやフレームワークによってエラーログの表示のされ方が違うため、エラーログを一見するだけでは何が問題なのかわからないことは一度や二度ではないはずです。 そこで今回は Web アプリのエラー収集、管理ツールである Errbit を紹介します。
Errbit とは
Web アプリケーションのエラー収集と管理を行う Airbrake というサービスのオープンソース版になります。
Errbit は Web アプリで発生した例外処理の情報を収集して、 視覚的に表示させることができる Rails 製の Web アプリケーションになります。 開発中の Web アプリに Errbit のエラー検知機能を設定しておくことで、開発の助けになるでしょう。 また、運用中の Web アプリに設定を継続しておけば Errbit で問題を検知することができるため、 エラー発生時に運用サーバにログインしてログを確認する必要がなく、対処時間を短くすることが期待されます。
導入方法
事前準備 必要なソフトウェアは MongoDB 2.6.0 以上、Ruby 2.1.0 以上となっています。 この後の内容は Mongo DB 2.6.11、Ruby 2.1.2、Rails 4.2.3 の環境で動作確認しています。
構築方法 Errbit 用のユーザを作成します。
sudo useradd errbit
Errbit 本体を Github のリポジトリから git clone します。 今回は /home/errbit に展開した上で bundle install します。
git clone https://github.com/errbit/errbit bundle config build.nokogiri —use-system-libraries bundle install —path=vendor/bundle
設置が完了したら、初期設定を行います。 ここで初回ログインに必要なメールアドレスとパスワードが表示されるので、忘れずにメモしておいてください。
bundle exec rake errbit:bootstrap Creating an initial admin user: — email: errbit@errbit.example.com — password: xxxxxxxxx
webrick を起動すれば、web から Errbit が表示されます。 bundle exec rails s -b 0.0.0.0 -p 3000
- Rails アプリ側設定 Errbit を導入したい Rails アプリの Gemfile に airbrake を追加します。
gem ‘airbrake' bundle update
Rails の設定を追加します。
vi config/initializers/errbit.rb require 'rake' require 'airbrake/rake_handler' Airbrake.configure do |config| config.api_key = API_KEY #Errbit でアプリの追加を行うと API Key が発行されるのでその値を追加 config.host = 'localhost' config.port = PORT_NUMBER config.secure = config.port == 443 config.development_environments = [] config.use_system_ssl_cert_chain = true config.rescue_rake_exceptions = true end
設定追加の確認を実施します。
bundle exec rake airbrake:test
エラーの確認方法
今回は Rails アプリのコントローラーに例外処理を追加します。vim app/controllers/hoge_controller.rb def login raise ‘exception' end
Web で該当の URL を表示させて例外を発生させます。 http://localhost:3000/hoge/login
Errbit にエラーが登録されるのを確認することができます。
エラーの詳細は以下のように整理されて表示されます。 URL やエラークラスの内容などが確認できますので、どこで何の例外処理が発生しているか一目瞭然です。
まとめ
今回は Rails アプリの例外処理を検知する Errbit の導入について紹介しました。 gem と設定ファイルを1つ追加するだけなので、まずは既存の Rails アプリへ Errbit を導入して、 エラー処理にも目を向けた開発や運用をしてみてはいかがでしょうか。