Module: Foam::Ruby::OtelSetup

Defined in:
lib/foam/ruby/otel_setup.rb

Class Method Summary collapse

Class Method Details

.configure!(config) ⇒ Object



14
15
16
17
# File 'lib/foam/ruby/otel_setup.rb', line 14

def configure!(config)
  configure_traces(config)
  configure_logs(config)
end

.configure_logs(config) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/foam/ruby/otel_setup.rb', line 36

def configure_logs(config)
  resource = OpenTelemetry::SDK::Resources::Resource.create(
    "service.name" => config.service_name,
    "deployment.environment" => ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "production"
  )

  exporter = OpenTelemetry::Exporter::OTLP::Logs::LogsExporter.new(
    endpoint: config.logs_endpoint,
    headers: config.otel_headers
  )

  processor = OpenTelemetry::SDK::Logs::Export::BatchLogRecordProcessor.new(exporter)
  logger_provider = OpenTelemetry::SDK::Logs::LoggerProvider.new(resource: resource)
  logger_provider.add_log_record_processor(processor)
  OpenTelemetry.logger_provider = logger_provider
end

.configure_traces(config) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/foam/ruby/otel_setup.rb', line 19

def configure_traces(config)
  OpenTelemetry::SDK.configure do |c|
    c.service_name = config.service_name

    c.add_span_processor(
      OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
        OpenTelemetry::Exporter::OTLP::Exporter.new(
          endpoint: config.traces_endpoint,
          headers: config.otel_headers
        )
      )
    )

    c.use_all
  end
end