エラートラッキングサービスの Sentry ですが、 一時的な通信エラーなど、Sidekiq で 1 回リトライすれば解決するようなエラーまで捕捉されると、通知が多くて厄介です。
そこで、リトライが起きたときだけ Sentry に送信されるようにしてみます。
まず、sentry-sidekiq gem を入れます。
Gemfile
gem 'sentry-rails' gem 'sentry-ruby' gem 'sentry-sidekiq'
次に、Sentry 設定の before_send を使ってフィルタ設定をします。
config/initializers/sentry.rb
Sentry.init do |config| ... if Sidekiq.server? config.before_send = ->(event, hint) { sidekiq_context = event.contexts[:sidekiq] # sidekiq_context['retry_count'] が nil => リトライ前 (sidekiq_context && sidekiq_context['retry_count'].nil?) ? nil : event } end end
以上で、リトライが起きたときだけ Sentry にエラーが送信されるようになります。