小規模Rails開発チームおすすめシリーズ:Error - HoneyBadger
小規模RailsチームのエラートラッキングをHoneyBadgerで効率化する
こんにちは、Railsエンジニアの皆さん。今日は、小規模開発チームでRailsプロジェクトを進める際に、エラートラッキングツールとしてHoneyBadgerをおすすめしたいと思います。HoneyBadgerは、その使いやすさと強力な機能セットにより、開発効率を大幅に向上させることができます。
HoneyBadgerは何がいいのか?
- 簡単なセットアップ: Railsプロジェクトへの導入が非常に簡単です。
- リアルタイムアラート: 重要なエラーをすぐに把握できます。
- 詳細なエラー情報: スタックトレース、環境変数、パラメータなどを含む豊富な情報が得られます。
- パフォーマンス監視: アプリケーションのパフォーマンスも同時に監視できます。
- 死活監視: アプリケーションが表示されるか死活監視も同時に監視できます。
- CronJobの監視: CronJobの実行も同時に監視できます。
セットアップ手順
- Gemfileに以下を追加します:
gem 'honeybadger', '~> 5.0'
- バンドルインストールを実行:
bundle install
- HoneyBadgerのセットアップスクリプトを実行:
bundle exec honeybadger install HONEYBADGER_API_KEY
これだけで基本的なセットアップは完了です!
効果的な使用方法
カスタムエラー通知
特定の条件でエラーを通知したい場合は、以下のようにカスタム通知を設定できます:
begin
# 何らかの処理
rescue => e
Honeybadger.notify(
error_class: "CustomError",
error_message: "重要なエラーが発生しました",
context: {
user_id: current_user.id,
action: "important_action"
}
)
end
コンテキストの追加
ユーザー情報やリクエスト情報などのコンテキストを追加することで、エラーの原因特定が容易になります:
class ApplicationController < ActionController::Base
before_action :set_honeybadger_context
private
def set_honeybadger_context
Honeybadger.context(
user_id: current_user.id,
user_email: current_user.email,
plan: current_user.plan
)
end
end
リアルタイムアラート
アラートがあった際はメールはSlackなどで通知する設定ができます。基本的なチャットツールはほぼ対応しているようです。また、Githubなどと連携すると自動でISSUEを起票してくれます。あと便利なのが開発環境でエラーを修正し、その後にDeployすると自動でエラーをResolvedに変更してくれます。
パフォーマンス監視
特徴的なのがInsightsという機能です。
insights:
enabled: true
このように設定を有効にすることで確認できます。ログデータが送付され、それに対しBadgerQLというクエリを投げることで確認できます。これによりPapertrailのようなログマネジメントツールに類することができます。ただし、ログのデータに関する料金は高めなので注意です。
events:
ignore:
- event_type: 'sql.active_record'
SQLのログがデータサイズが多いのでこれを無効にすることでログデータの容量を効果的に節約することができます。ただ確認できるデータへ減ってしまうのでログマネジメントツールをつかいづ付けるほうがいいのか、わたしたちのチームは現在は模索中です。
また、この情報を下にAPM的なダッシュボードを作ってチェックすることもできます。専用のAPMにはかないませんが、一定の傾向を見ることができます。
死活監視
細かい機能ですが、死活監視の機能もついています。わたしたちのチームはPingdomによって死活監視をしていましたが、HoneybadgerのUptimeに移行しました。死活監視は求める機能がシンプルなので移行も容易です。ツールを統合することでコスト削減も見込めます。
CronJobの監視
また、CronJobの監視はDead Man's Snitchを使っているのですが、HoneybadgerのCheck-Insという機能で賄えそうなので、移行を検討しています。
デプロイトラッキング
デプロイ時に以下のコマンドを実行することで、デプロイの追跡が可能になります:
honeybadger deploy --environment=production --revision=$(git rev-parse HEAD) --repository=git@github.com:your/repo.git
まとめ+
HoneyBadgerは、小規模Railsチームにとって非常に有用なツールです。セットアップの簡単さ、豊富な監視機能、そして使いやすさにより、開発プロセスを大幅に改善することができます。エラーの早期発見と解決、そしてアプリケーションの安定性向上に貢献します。
最後に移行の背景を書いておきます。Honeybadgerの以前はOSSのErrbitを活用していました。エラートラッカーはエラーをキャッチして適切なプラットフォームに通知できればいいので、UI/UXが選定における優先事項ではなく、OSSのErrbitは良い線選択肢でした。コストメリットも大きいです。
Errbit自体もRailsで書かれており、OSSに貢献できます。
以降のきっかけはホスティング先のOSアップデートに際してRubyのアップデートが必要になったことです。ErrbitはRailsアップグレードのPRは作られてはいるのですが、現在の最新版はRails5系です。これではRubyの最新版では使えません。
引き続きOSSとしてのErrbitには貢献できることはしたいと思っていますが、安定的にアプリケーションを運用するため、Honeybadgerを導入することにした次第です。
Discussion