🕸️

小規模Rails開発チームおすすめシリーズ:Error - HoneyBadger

2024/09/05に公開

小規模RailsチームのエラートラッキングをHoneyBadgerで効率化する

こんにちは、Railsエンジニアの皆さん。今日は、小規模開発チームでRailsプロジェクトを進める際に、エラートラッキングツールとしてHoneyBadgerをおすすめしたいと思います。HoneyBadgerは、その使いやすさと強力な機能セットにより、開発効率を大幅に向上させることができます。

HoneyBadgerは何がいいのか?

  1. 簡単なセットアップ: Railsプロジェクトへの導入が非常に簡単です。
  2. リアルタイムアラート: 重要なエラーをすぐに把握できます。
  3. 詳細なエラー情報: スタックトレース、環境変数、パラメータなどを含む豊富な情報が得られます。
  4. パフォーマンス監視: アプリケーションのパフォーマンスも同時に監視できます。
  5. 死活監視: アプリケーションが表示されるか死活監視も同時に監視できます。
  6. CronJobの監視: CronJobの実行も同時に監視できます。

セットアップ手順

  1. Gemfileに以下を追加します:
gem 'honeybadger', '~> 5.0'
  1. バンドルインストールを実行:
bundle install
  1. 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

リアルタイムアラート

Error Tracker

アラートがあった際はメールはSlackなどで通知する設定ができます。基本的なチャットツールはほぼ対応しているようです。また、Githubなどと連携すると自動でISSUEを起票してくれます。あと便利なのが開発環境でエラーを修正し、その後にDeployすると自動でエラーをResolvedに変更してくれます。

パフォーマンス監視

特徴的なのがInsightsという機能です。

 insights:
  enabled: true

このように設定を有効にすることで確認できます。ログデータが送付され、それに対しBadgerQLというクエリを投げることで確認できます。これによりPapertrailのようなログマネジメントツールに類することができます。ただし、ログのデータに関する料金は高めなので注意です。

events:
  ignore:
    - event_type: 'sql.active_record'

SQLのログがデータサイズが多いのでこれを無効にすることでログデータの容量を効果的に節約することができます。ただ確認できるデータへ減ってしまうのでログマネジメントツールをつかいづ付けるほうがいいのか、わたしたちのチームは現在は模索中です。

Peformance Dashboard

また、この情報を下にAPM的なダッシュボードを作ってチェックすることもできます。専用のAPMにはかないませんが、一定の傾向を見ることができます。

APM like

死活監視

細かい機能ですが、死活監視の機能もついています。わたしたちのチームは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に貢献できます。
https://github.com/errbit/errbit

以降のきっかけはホスティング先のOSアップデートに際してRubyのアップデートが必要になったことです。ErrbitはRailsアップグレードのPRは作られてはいるのですが、現在の最新版はRails5系です。これではRubyの最新版では使えません。

引き続きOSSとしてのErrbitには貢献できることはしたいと思っていますが、安定的にアプリケーションを運用するため、Honeybadgerを導入することにした次第です。

Discussion