Module: Datadog::OpenTelemetry::SDK::Configurator

Defined in:
lib/datadog/opentelemetry/sdk/configurator.rb

Overview

The Configurator is responsible for setting wiring up different OpenTelemetry requirements together. Some of the requirements will be changed to Datadog versions.

Instance Method Summary collapse

Instance Method Details

#configure ⇒ Object

SDK 1.6.0+ calls logs_configuration_hook from configure. https://github.com/open-telemetry/opentelemetry-ruby/blob/opentelemetry-sdk/v1.6.0/sdk/lib/opentelemetry/sdk/configurator.rb#L152 Older supported SDK versions do not, so we call it explicitly as a fallback. The flag prevents double-calling on newer SDK versions.



37
38
39
40
41
# File 'lib/datadog/opentelemetry/sdk/configurator.rb', line 37

def configure
  @datadog_logs_hook_called = false
  super
  logs_configuration_hook unless @datadog_logs_hook_called
end

#configure_propagation ⇒ Object

Ensure Datadog-configure propagation styles have are applied when configured.

DEV: Support configuring propagation through the environment variable DEV: OTEL_PROPAGATORS, alias to DD_TRACE_PROPAGATION_STYLE



23
24
25
26
# File 'lib/datadog/opentelemetry/sdk/configurator.rb', line 23

def configure_propagation
  @propagators = [Propagator.new(Tracing::Contrib::HTTP)]
  super
end

#initialize ⇒ Object



14
15
16
17
# File 'lib/datadog/opentelemetry/sdk/configurator.rb', line 14

def initialize
  super
  @id_generator = IdGenerator
end

#logs_configuration_hook ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/datadog/opentelemetry/sdk/configurator.rb', line 58

def logs_configuration_hook
  @datadog_logs_hook_called = true
  components = Datadog.send(:components)
  unless components.settings.opentelemetry.logs.enabled
    super if defined?(super)
    return
  end

  begin
    require "opentelemetry-logs-sdk"
  rescue LoadError => exc
    components.logger.warn("Failed to load OpenTelemetry logs gems: #{exc.class}: #{exc.message}")
    return
  end

  success = Datadog::OpenTelemetry::Logs.initialize!(components)
  unless success
    components.logger.warn("Falling back to OpenTelemetry default logs configuration")
    super if defined?(super)
  end
end

#metrics_configuration_hook ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/datadog/opentelemetry/sdk/configurator.rb', line 43

def metrics_configuration_hook
  components = Datadog.send(:components)
  return super unless components.settings.opentelemetry.metrics.enabled

  begin
    require "opentelemetry-metrics-sdk"
  rescue LoadError => exc
    components.logger.warn("Failed to load OpenTelemetry metrics gems: #{exc.class}: #{exc.message}")
    return super
  end

  success = Datadog::OpenTelemetry::Metrics.initialize!(components)
  super unless success
end

#wrapped_exporters_from_env ⇒ Object

Ensure Datadog-configure trace writer is configured.



29
30
31
# File 'lib/datadog/opentelemetry/sdk/configurator.rb', line 29

def wrapped_exporters_from_env
  [SpanProcessor.new]
end