Module: Splunk::Otel::ExporterExtensions

Defined in:
lib/splunk/otel/proprietary_exporters.rb

Overview

internal module for allowing our exporters to be set via ENV

Instance Method Summary collapse

Instance Method Details

#effective_splunk_jaeger_endpointObject



10
11
12
13
14
15
# File 'lib/splunk/otel/proprietary_exporters.rb', line 10

def effective_splunk_jaeger_endpoint
  return "https://ingest.#{ENV["SPLUNK_REALM"]}.signalfx.com/v1/trace" if ENV["SPLUNK_REALM"]
  return ENV["OTEL_EXPORTER_JAEGER_ENDPOINT"] if ENV["OTEL_EXPORTER_JAEGER_ENDPOINT"]

  "http://127.0.0.1:9080/v1/trace"
end

#fetch_exporter_with_args(name, class_name, **args) ⇒ Object



42
43
44
45
46
47
48
49
50
51
# File 'lib/splunk/otel/proprietary_exporters.rb', line 42

def fetch_exporter_with_args(name, class_name, **args)
  # TODO: warn if jaeger exporter gem is not present
  exporter = Kernel.const_get(class_name).new(**args)
  OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new exporter
rescue NameError
  OpenTelemetry.logger.warn "The #{name} exporter cannot be configured" \
                            "- please add opentelemetry-exporter-#{name} to your Gemfile" \
                            ", spans will not be exported.."
  nil
end

#proprietary_exporters(exporters_keys) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/splunk/otel/proprietary_exporters.rb', line 29

def proprietary_exporters(exporters_keys)
  (exporters_keys & OUR_EXPORTERS_KEYS).map do |exporter_key|
    case exporter_key
    when "jaeger-thrift-splunk"
      args = {
        endpoint: effective_splunk_jaeger_endpoint
      }
      fetch_exporter_with_args("jaeger-thrift-splunk", "OpenTelemetry::Exporter::Jaeger::CollectorExporter",
                               **args)
    end
  end.compact
end

#wrapped_exporters_from_envObject



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/splunk/otel/proprietary_exporters.rb', line 17

def wrapped_exporters_from_env
  original_env_value = ENV.fetch("OTEL_TRACES_EXPORTER", "otlp")
  exporters_keys = original_env_value.split(",").map(&:strip)
  non_proprietary_exporters_keys = exporters_keys - OUR_EXPORTERS_KEYS

  ENV["OTEL_TRACES_EXPORTER"] = non_proprietary_exporters_keys.join(",")
  original_exporters = super
  ENV["OTEL_TRACES_EXPORTER"] = original_env_value

  original_exporters + proprietary_exporters(exporters_keys)
end