弊社では、以下のエントリで紹介したように、Bugsnagを利用してエラー監視をしています。
前回は、JavaScriptでの利用について紹介しましたが、今回はRailsでどのように利用しているのかを紹介します。
Bugsnagの選定理由
Railsのエラー検知サービスとしては、airbrakeやsentry等が有名ですが、Bugsnagは他と比較して費用が手頃でかつUIが見やすかったため選定しました。(それほど時間をかけて、比較検討したわけではありません)
- Error Monitoring and Detection Software | Airbrake
- Sentry | Error Tracking Software — JavaScript, Python, PHP, Ruby, more
導入手順
Gemfileに下記を追加して、bundle installを実行します。
gem 'bugsnag'
gemを追加すると、以下のコマンドでbugsnagのconfigファイルが生成できます。API KEYはbugsnagの管理画面から取得できます。
bundle exec rails generate bugsnag YOUR_API_KEY_HERE
これだけで、自動的に発生した例外を補足して、Bugsnagへ通知されるようになります。
任意場所に通知を仕込む
通常のケースでは通るはずがないコードにも、Bugsnagを仕込んで検知するようにしています。
例)必ず取得できるはずのデータが取得できなかった場合
Bugsnag.notify( RuntimeError.new('not found xxxx '), { :severity => 'error', :errro_detail => 'エラーの詳細・・・', :error_data => {:aaa => '・・・', :bbb => '・・・`}, } )
errro_detail,error_dataに各種データを設定することで、Bugsnag側で確認できます。
このように任意場所で通知を仕込むことで、データ不備によるエラーを早期検知することができるようになりました。
ChatWorkへの通知方法
Bugsnagがエラーを検知するとChatWorkへ通知するようにしています。残念ながら、チャットーワークとの連携はデフォルトでは用意されていないので、独自のAPIを用意して実現しています。
NewrelicとChatWorkの連携でも同じことを行っていますので、詳細は下記の記事を御覧ください。
まとめ
以前は、エラーログを定期的にチェックして、予期していないエラーが発生していないかを確認していましたが、Bugsnagを導入してからは不要になりました。 Bugsnagは導入も簡単で、費用を比較的安いので、非常におすすめのサービスです。