Class: AWS::Distro::OpenTelemetry::Exporter::XRay::UDP::AWSXRayUDPSpanExporter

Inherits:
OpenTelemetry::SDK::Trace::Export::SpanExporter
  • Object
show all
Defined in:
lib/aws/distro/opentelemetry/exporter/xray/udp/exporter.rb

Overview

An trace exporter that sends spans over UDP in an X-Ray format.

Instance Method Summary collapse

Constructor Details

#initialize(endpoint = nil, signal_prefix = DEFAULT_FORMAT_OTEL_TRACES_BINARY_PREFIX) ⇒ AWSXRayUDPSpanExporter

Returns a new instance of AWSXRayUDPSpanExporter.



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/aws/distro/opentelemetry/exporter/xray/udp/exporter.rb', line 63

def initialize(endpoint = nil, signal_prefix = DEFAULT_FORMAT_OTEL_TRACES_BINARY_PREFIX)
  @endpoint = if endpoint.nil?
                if lambda_environment?
                  xray_daemon_endpoint || DEFAULT_ENDPOINT
                else
                  DEFAULT_ENDPOINT
                end
              else
                endpoint
              end

  @udp_exporter = AWS::Distro::OpenTelemetry::Exporter::XRay::UDP::UdpExporter.new(@endpoint)
  @signal_prefix = signal_prefix
  @shutdown = false
end

Instance Method Details

#export(span_data, timeout: nil) ⇒ Integer

Called to export sampled OpenTelemetry::SDK::Trace::SpanData structs.

Parameters:

  • span_data (Enumerable<::OpenTelemetry::SDK::Trace::SpanData>)

    the list of recorded OpenTelemetry::SDK::Trace::SpanData structs to be exported.

  • timeout (optional Numeric) (defaults to: nil)

    An optional timeout in seconds.

Returns:

  • (Integer)

    the result of the export.



86
87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'lib/aws/distro/opentelemetry/exporter/xray/udp/exporter.rb', line 86

def export(span_data, timeout: nil)
  return FAILURE if @shutdown

  encoded_etsr = encode(span_data)
  return FAILURE if encoded_etsr.nil?

  begin
    @udp_exporter.send_data(encoded_etsr, @signal_prefix)
    SUCCESS
  rescue StandardError => e
    ::OpenTelemetry.logger.error("Error exporting spans: #{e}")
    FAILURE
  end
end

#force_flush(timeout: nil) ⇒ Object

Called when OpenTelemetry::SDK::Trace::TracerProvider#force_flush is called, if this exporter is registered to a OpenTelemetry::SDK::Trace::TracerProvider object.

Parameters:

  • timeout (optional Numeric) (defaults to: nil)

    An optional timeout in seconds.



106
107
108
# File 'lib/aws/distro/opentelemetry/exporter/xray/udp/exporter.rb', line 106

def force_flush(timeout: nil)
  SUCCESS
end

#shutdown(timeout: nil) ⇒ Object

Called when OpenTelemetry::SDK::Trace::TracerProvider#shutdown is called, if this exporter is registered to a OpenTelemetry::SDK::Trace::TracerProvider object.

Parameters:

  • timeout (optional Numeric) (defaults to: nil)

    An optional timeout in seconds.



115
116
117
118
119
# File 'lib/aws/distro/opentelemetry/exporter/xray/udp/exporter.rb', line 115

def shutdown(timeout: nil)
  @udp_exporter.shutdown
  @shutdown = true
  SUCCESS
end