無料でアプリケーションのエラーを賢く管理する (Errbit on heroku)
エラーの管理の王道はエラーメールを送信する方法があると思う
エラーメールの欠点
- エラーが大量に発生したとき
- エラーメールばかり届いて萎える
- 大事なメールがエラーメールに埋まることがある
- ネットワークの帯域を圧迫する
- 誰にエラーが届くかの管理がしにくい
- エラーの詳細が分かりにくい
- アプリケーション、環境(production, staging)の仕分けがしにくい
- エラーの解決・未解決を管理できない
※同じ種類のエラーメールはGMailや最近のMac Mailはまとめてくれるので以前よりはその点はよくなった
アプリケーションを管理するウェブサービス
例えば次のようなものがある
共通の大きな長所としては
エラーのメール通知もするが、同じエラーが連発した場合1通しか来ない
Airbrake: The error app. (前身はHoptoad)
長所としてはUIはまあまあ
短所としてはたまにサービスがちゃんと動いていないと言う噂(致命的)
Exception and error tracking for your web apps | Coalmine
長所としては安定稼働、検索機能
短所としてはUIが微妙
※上記は個人的な感想
※いずれも使うプロジェクトの数などによって有料になる
そこでオープンソースのErrbit (Airbrakeのクローン) 無料
- herokuの無料範囲で稼働できる
- heroku構築は30分〜でできる。手順もしっかりしている
- さまざまなチケット管理サービスなどと連携できる
- エラーのメール通知もするが、同じエラーが連発した場合1通しか来ない
- エラーの詳細が分かりやすい
Errbitセットアップ
必要なもの
- Herokuのアカウント
- herokuのToolbelt (またはgem)
- git
以下コマンドの demo-errbit をすべて置き換えること
$ git clone git://github.com/errbit/errbit.git $ cd errbit/ # cd した後createしないと毎回 --app demo-errbit 追加する必要が出て面倒 # git remote add herokuも自分でする必要がある $ heroku apps:create demo-errbit $ bundle $ heroku addons:add mongolab:starter $ heroku addons:add sendgrid:starter $ heroku config:add HEROKU=true $ heroku config:add SECRET_TOKEN="$(bundle exec rake secret)" $ heroku config:add ERRBIT_HOST=demo-errbit.herokuapp.com $ heroku config:add ERRBIT_EMAIL_FROM=admin@demo-errbit.herokuapp.com $ heroku run rake db:seed $ open http://demo-errbit.herokuapp.com/
- 情報が古くなった場合はheroku, errbitそれぞれの方法に従うこと
- bundle失敗するかもしれないが無理に進めたければSECRET_TOKENをスキップすれば良い
- ただしアプリ内のSECRET_TOKENを適当に(他などで)生成して差し替えてプッシュすべき
- SECRET_TOKENを公開しなければ問題ないはず
アプリケーションの登録
上から簡単に
- アプリ名(必須)
- リポジトリ連携(任意)
- ブランチ名
- Githubレポ
- BitBucketレポ
- 通知設定
- エラー時にメール通知
- デプロイ時にメール通知(デプロイ時フックが必要)
- 通知対象
- すべてのユーザーに通知
- メールアドレスで通知先を登録
- 登録されているユーザーを通知先として登録
- デプロイごとにすべてのエラーを解決済みに変更する
- Issueトラッカーとの連携
- BitBucket
- FOGBUGZ
- Github
- Gitlab
- LightHouse
- Mingle
- Pivotal Tracker
- Redmine
- 通知サービス
- Campfire
- GTALK
- Hipchat
- HOIIO
- HUBOT
- PUSHOVER
- WEBHOOK
とりあえずアプリ名だけは入力して作成 (ADD APP)
アプリケーション側の設定
Errbit上でアプリを登録すると説明画面が出るのでそれに従えば良い
現時点で基本的には
- gem 'airbrake' 追加
- config/initializers/errbit.rb にコードを貼り付け、コミット、プッシュ
- 通知テスト
- $ heroku run rake airbrake:test
他の機能(気になるものでまだまとめてない・試してないもの)
- 解決済みエラーデータのクリア
- できるだけherokuの無料範囲で使えるようにするための手順まで用意してある
- チケット管理サービスとの連携
- デプロイフック通知
- Github認証
- User information in error reports (airbrake_user_attributes)
- Set up Javascript notifications (airbrake_javascript_notifier)
- iCal?
基本的には errbit/errbit · GitHub 参照
その他
- アプリケーションによってはユーザー情報などのparameterの一部をアプリ側でフィルタする必要がある
- 複数のHerokuアカウント(個人用、会社用など)を同一マシンで使いたい場合一手間かかるので注意