Class: Datadog::Tracing::Contrib::ActionCable::Instrumentation::ActionCableChannel::Tracer

Inherits:
Object
  • Object
show all
Defined in:
lib/datadog/tracing/contrib/action_cable/instrumentation.rb

Overview

Instrumentation for Channel hooks.

Class Method Summary collapse

Class Method Details

.trace(channel, hook) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/datadog/tracing/contrib/action_cable/instrumentation.rb', line 58

def self.trace(channel, hook)
  configuration = Datadog.configuration.tracing[:action_cable]

  Tracing.trace("action_cable.#{hook}") do |span|
    span.service = configuration[:service_name] if configuration[:service_name]
    span.resource = "#{channel.class}##{hook}"
    span.span_type = Tracing::Metadata::Ext::AppTypes::TYPE_WEB

    # Set analytics sample rate
    if Contrib::Analytics.enabled?(configuration[:analytics_enabled])
      Contrib::Analytics.set_sample_rate(span, configuration[:analytics_sample_rate])
    end

    # Measure service stats
    Contrib::Analytics.set_measured(span)

    span.set_tag(Ext::TAG_CHANNEL_CLASS, channel.class.to_s)

    span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
    span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, hook)

    yield
  end
end