class Aws::Telemetry::OTelProvider

OTelProvider allows to emit telemetry data based on OpenTelemetry.

To use this provider, require the ‘opentelemetry-sdk` gem and then, pass in an instance of a `Aws::Telemetry::OTelProvider` as the telemetry provider in the client config.

@example Configuration

require 'opentelemetry-sdk'

# sets up the OpenTelemetry SDK with their config defaults
OpenTelemetry::SDK.configure

otel_provider = Aws::Telemetry::OTelProvider.new
client = Aws::S3::Client.new(telemetry_provider: otel_provider)

OpenTelemetry supports many ways to export your telemetry data. See {opentelemetry.io/docs/languages/ruby/exporters here} for more information.

@example Exporting via console

require 'opentelemetry-sdk'

ENV['OTEL_TRACES_EXPORTER'] ||= 'console'

# configures the OpenTelemetry SDK with defaults
OpenTelemetry::SDK.configure

otel_provider = Aws::Telemetry::OTelProvider.new
client = Aws::S3::Client.new(telemetry_provider: otel_provider)

Public Class Methods

new() click to toggle source
# File lib/aws-sdk-core/telemetry/otel.rb, line 35
def initialize
  unless otel_loaded?
    raise ArgumentError,
          'Requires the `opentelemetry-sdk` gem to use OTel Provider.'
  end
  super(
    tracer_provider: OTelTracerProvider.new,
    context_manager: OTelContextManager.new
  )
end

Private Instance Methods

otel_loaded?() click to toggle source
# File lib/aws-sdk-core/telemetry/otel.rb, line 48
def otel_loaded?
  if @use_otel.nil?
    @use_otel =
      begin
        require 'opentelemetry-sdk'
        true
      rescue LoadError, NameError
        false
      end
  end
  @use_otel
end