LCL Engineers' Blog

バス比較なび・格安移動・バスとりっぷを運営する LCLの開発者ブログ

BugsnagでRailsのエラーを漏れなく補足する

弊社では、以下のエントリで紹介したように、Bugsnagを利用してエラー監視をしています。

techblog.lclco.com

前回は、JavaScriptでの利用について紹介しましたが、今回はRailsでどのように利用しているのかを紹介します。

Bugsnagの選定理由

Railsのエラー検知サービスとしては、airbrakeやsentry等が有名ですが、Bugsnagは他と比較して費用が手頃でかつUIが見やすかったため選定しました。(それほど時間をかけて、比較検討したわけではありません)

導入手順

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側で確認できます。

f:id:lcl-engineer:20170226185952p:plain

このように任意場所で通知を仕込むことで、データ不備によるエラーを早期検知することができるようになりました。

ChatWorkへの通知方法

Bugsnagがエラーを検知するとChatWorkへ通知するようにしています。残念ながら、チャットーワークとの連携はデフォルトでは用意されていないので、独自のAPIを用意して実現しています。

NewrelicとChatWorkの連携でも同じことを行っていますので、詳細は下記の記事を御覧ください。

techblog.lclco.com

まとめ

以前は、エラーログを定期的にチェックして、予期していないエラーが発生していないかを確認していましたが、Bugsnagを導入してからは不要になりました。 Bugsnagは導入も簡単で、費用を比較的安いので、非常におすすめのサービスです。