Class: Datadog::Contrib::Sidekiq::Tracer
- Inherits:
-
Object
- Object
- Datadog::Contrib::Sidekiq::Tracer
- Defined in:
- lib/ddtrace/contrib/sidekiq/tracer.rb
Overview
Middleware is a Sidekiq server-side middleware which traces executed jobs
Instance Method Summary collapse
- #call(worker, job, queue) ⇒ Object
-
#initialize(options = {}) ⇒ Tracer
constructor
A new instance of Tracer.
Constructor Details
#initialize(options = {}) ⇒ Tracer
Returns a new instance of Tracer.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/ddtrace/contrib/sidekiq/tracer.rb', line 28 def initialize( = {}) # check if Rails configuration is available and use it to override # Sidekiq defaults rails_config = ::Rails.configuration.datadog_trace rescue {} base_config = DEFAULT_CONFIG.merge(rails_config) user_config = base_config.merge() @tracer = user_config[:tracer] @sidekiq_service = user_config[:sidekiq_service] # set Tracer status @tracer.enabled = user_config[:enabled] Datadog::Tracer.debug_logging = user_config[:debug] # configure the Tracer instance @tracer.configure( hostname: user_config[:trace_agent_hostname], port: user_config[:trace_agent_port] ) end |
Instance Method Details
#call(worker, job, queue) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/ddtrace/contrib/sidekiq/tracer.rb', line 48 def call(worker, job, queue) # If class is wrapping something else, the interesting resource info # is the underlying, wrapped class, and not the wrapper. resource = if job['wrapped'] job['wrapped'] else job['class'] end # configure Sidekiq service service = sidekiq_service(resource_worker(resource)) set_service_info(service) @tracer.trace('sidekiq.job', service: service, span_type: 'job') do |span| span.resource = resource span.set_tag('sidekiq.job.id', job['jid']) span.set_tag('sidekiq.job.retry', job['retry']) span.set_tag('sidekiq.job.queue', job['queue']) span.set_tag('sidekiq.job.wrapper', job['class']) if job['wrapped'] yield end end |