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

image01

  • 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

image02

Errbit にエラーが登録されるのを確認することができます。

image03

エラーの詳細は以下のように整理されて表示されます。 URL やエラークラスの内容などが確認できますので、どこで何の例外処理が発生しているか一目瞭然です。

image04

まとめ

今回は Rails アプリの例外処理を検知する Errbit の導入について紹介しました。 gem と設定ファイルを1つ追加するだけなので、まずは既存の Rails アプリへ Errbit を導入して、 エラー処理にも目を向けた開発や運用をしてみてはいかがでしょうか。