Как я могу сказать Sentry не предупреждать об определенных исключениях? - PullRequest
0 голосов
/ 27 октября 2018

У меня есть приложение на Rails 5, использующее raven-ruby для отправки исключений в Sentry, который затем отправляет оповещения нашему Slack.и быть повторенным.В основном это периодические ошибки API и тайм-ауты, которые устраняются самостоятельно за несколько минут.Часовой покорно отправляет эти ложные тревоги нашему Slack.

Я уже добавил retry_count к заданиям .Как я могу предотвратить отправку Sentry исключений с retry_count

sidekiq: {
  context: Job raised exception,
  job: {
    args: [{...}],
    class: SomeWorker,
    created_at: 1540590745.3296254,
    enqueued_at: 1540607026.4979043,
    error_class: HTTP::TimeoutError,
    error_message: Timed out after using the allocated 13 seconds,
    failed_at: 1540590758.4266324,
    jid: b4c7a68c45b7aebcf7c2f577,
    queue: default,
    retried_at: 1540600397.5804272,
    retry: True,
    retry_count: 2
  },
}

Каковы плюсы и минусы того, что они вообще не отправляются в Sentry по сравнению с отправкой их в Sentry, но без предупреждения?

1 Ответ

0 голосов
/ 28 октября 2018

Вы можете отфильтровать все событие, если значение retry_count

class SentryWorker < ApplicationWorker
  sidekiq_options queue: :default

  def perform(event)
    retry_count = event.dig(:extra, :sidekiq, :job, retry_count)
    if retry_count.nil? || retry_count > N
      Raven.send_event(event)
    end
  end
end

Другая идея - установить другой отпечаток в зависимости от того, повторная попытка или нет.Например:

class MyJobProcessor < Raven::Processor
  def process(data)
    retry_count = event.dig(:extra, :sidekiq, :job, retry_count)
    if (retry_count || 0) < N
      data["fingerprint"] = ["will-retry-again", "{{default}}"]
    end
  end
end

См. https://docs.sentry.io/learn/rollups/?platform=javascript#custom-grouping

Я не проверял это, но это должно разделить ваши проблемы на две части, в зависимости от того, будет ли sidekiq повторять их.Затем вы можете игнорировать одну группу, но можете просматривать ее, когда вам нужны данные.

...