概要

Sentry とは、本番環境でエラーが起きたときに通知・記録してくれる監視サービスである。

ローカル開発中はエラーがターミナルに出るのですぐ気づけるが、本番環境だとユーザーがエラーに遭遇しても開発者は気づけないことが多い。Sentry はそれを解決する「安全網」の役割を果たす。


できること

機能 内容
即時通知 エラー発生時に Slack・メール等で通知
スタックトレース記録 どのファイルの何行目でエラーが起きたか記録
影響範囲の把握 どのユーザーが・何回・どの環境でエラーに遭遇したか把握
ダッシュボード可視化 エラーの発生頻度や傾向をグラフで確認

Rails での導入

Gemfile

gem "sentry-ruby"
gem "sentry-rails"

初期化ファイル

# config/initializers/sentry.rb
Sentry.init do |config|
  config.dsn = ENV["SENTRY_DSN"]
  config.breadcrumbs_logger = [:active_support_logger]
end

DSN とは

DSN(Data Source Name) は、Sentry のプロジェクトごとに発行される接続先 URL のようなものである。環境変数 SENTRY_DSN に設定することで、アプリが Sentry にエラーを送信できるようになる。

SENTRY_DSN=https://xxxxx@o0.ingest.sentry.io/0

ローカル開発 vs 本番環境

【ローカル開発】

エラー発生 → ターミナルにスタックトレースが出る → 開発者がすぐ気づく


【本番環境(Sentry なし)】

エラー発生 → ユーザーがエラーに遭遇 → 開発者は気づかない


【本番環境(Sentry あり)】

エラー発生 → Sentry が捕捉 → Slack 等に通知 → 開発者がすぐ対応できる

プランについて

個人開発や小規模サービスであれば無料プランで十分なことが多い。本番サービスでもほぼ標準的に導入されているツールであり、「本番でエラーが起きたけど誰も気づかなかった」を防ぐための安全網として機能する。


まとめ

  • 何のため? → 本番環境でのエラーを即座に検知・通知するため
  • DSN とは? → Sentry プロジェクトへの接続先 URL。環境変数で管理する
  • Rails への導入は?sentry-ruby / sentry-rails gem を追加し、initializer で Sentry.init を設定するだけ
  • 無料プランは? → 個人開発・小規模サービスなら無料で十分

参考文献