我们可以在工作端而不是客户端配置sentry dsn吗?

时间:2016-12-22 13:37:01

标签: ruby asynchronous backgroundworker sidekiq sentry

我必须建立一个中央工作者,可以有多个服务将哨事件推送给它。因此,每个服务都有自己的dsn,是否可以在中央工作者而不是客户端上配置dsn?

目前我在应用程序上有类似的东西将事件推送到redis:

 Raven.configure do |config|
  configuration = {
    dsn: Figaro.env.sentry_host,
    environments: %w(production),
    sanitize_fields: Rails.application.config.filter_parameters.map(&:to_s),
  }

  config.async = lambda { |event|
    SentryNotifierJob.perform_async(event.to_hash, configuration)
  }

  config.logger = Rails.logger
end

这是关于工人的:

class SentryNotifierJob
  include Sidekiq::Worker
  sidekiq_options :retry => true, queue: :default

  def perform(event, config)

    Raven.configure do |config|
      config.dsn = config[:dsn]

      config.sanitize_fields = configuration[:sanitize_fields]

      config.processors = [Raven::Processor::SanitizeData]
      config.sanitize_fields.push('Authorization', 'tokenId', 'Client-Id', 'Pass-Key', 'gcmKey', 'deviceToken')

      config.logger = Rails.logger
    end
    Raven.send_event(event)
  end
end

1 个答案:

答案 0 :(得分:1)

得到答案,是的,可以从工作人员而不是客户端配置sentry dsn。 Raven并不关心配置的更新位置。