Module: Epsagon

Defined in:
lib/epsagon.rb

Overview

Epsagon tracing main entry point

Constant Summary collapse

DEFAULT_BACKEND =
'opentelemetry.tc.epsagon.com:443/traces'
@@epsagon_config =
{
  metadata_only: ENV['EPSAGON_METADATA']&.to_s&.downcase != 'false',
  debug: ENV['EPSAGON_DEBUG']&.to_s&.downcase == 'true',
  token: ENV['EPSAGON_TOKEN'],
  app_name: ENV['EPSAGON_APP_NAME'],
  max_attribute_size: ENV['EPSAGON_MAX_ATTRIBUTE_SIZE'] || 5000,
  backend: ENV['EPSAGON_BACKEND'] || DEFAULT_BACKEND
}

Class Method Summary collapse

Class Method Details

.epsagon_confs(configurator) ⇒ Object

config opentelemetry with epsaon extensions:



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/epsagon.rb', line 46

def epsagon_confs(configurator)
  configurator.resource = OpenTelemetry::SDK::Resources::Resource.telemetry_sdk.merge(
    OpenTelemetry::SDK::Resources::Resource.create({ 
      'application' => @@epsagon_config[:app_name],
      'epsagon.version' => EpsagonConstants::VERSION
    })
  )
  configurator.use 'EpsagonSinatraInstrumentation', { epsagon: @@epsagon_config }
  configurator.use 'EpsagonNetHTTPInstrumentation', { epsagon: @@epsagon_config }
  configurator.use 'EpsagonFaradayInstrumentation', { epsagon: @@epsagon_config }
  configurator.use 'EpsagonAwsSdkInstrumentation', { epsagon: @@epsagon_config }
  configurator.use 'EpsagonRailsInstrumentation', { epsagon: @@epsagon_config }
  configurator.use 'OpenTelemetry::Instrumentation::Sidekiq'


  if @@epsagon_config[:debug]
    configurator.add_span_processor OpenTelemetry::SDK::Trace::Export::SimpleSpanProcessor.new(
      OpenTelemetry::Exporter::OTLP::Exporter.new(headers: {
                                                    'x-epsagon-token' => @@epsagon_config[:token]
                                                  },
                                                  endpoint: @@epsagon_config[:backend],
                                                  insecure: @@epsagon_config[:insecure] || false)
    )

    configurator.add_span_processor OpenTelemetry::SDK::Trace::Export::SimpleSpanProcessor.new(
      OpenTelemetry::SDK::Trace::Export::ConsoleSpanExporter.new
    )
  else
    configurator.add_span_processor OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
      exporter: OpenTelemetry::Exporter::OTLP::Exporter.new(headers: {
                                                              'x-epsagon-token' => @@epsagon_config[:token]
                                                            },
                                                            endpoint: @@epsagon_config[:backend],
                                                            insecure: @@epsagon_config[:insecure] || false)
    )
  end
end

.get_configObject



40
41
42
# File 'lib/epsagon.rb', line 40

def get_config
  @@epsagon_config
end

.init(**args) ⇒ Object



35
36
37
38
# File 'lib/epsagon.rb', line 35

def init(**args)
  @@epsagon_config.merge!(args)
  OpenTelemetry::SDK.configure
end