Class: Uptrace::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/uptrace/client.rb

Overview

Uptrace client that configures OpenTelemetry SDK to use Uptrace exporter.

Instance Method Summary collapse

Constructor Details

#initialize(dsn: '') ⇒ Client

Returns a new instance of Client.

Parameters:

  • dsn (string) (defaults to: '')


9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/uptrace/client.rb', line 9

def initialize(dsn: '')
  dsn = ENV.fetch('UPTRACE_DSN', '') if dsn.empty?

  begin
    @dsn = DSN.new(dsn)
  rescue ArgumentError => e
    Uptrace.logger.error("Uptrace is disabled: #{e.message}")
    @disabled = true

    @dsn = DSN.new('https://[email protected]/PROJECT_ID')
  end
end

Instance Method Details

#disabled?Boolean

Returns:

  • (Boolean)


22
23
24
# File 'lib/uptrace/client.rb', line 22

def disabled?
  @disabled
end

#span_processorOpenTelemetry::SDK::Trace::Export::BatchSpanProcessor

Returns:

  • (OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor)


37
38
39
40
41
42
43
44
45
# File 'lib/uptrace/client.rb', line 37

def span_processor
  exp = Uptrace::Trace::Exporter.new(@dsn)
  OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor.new(
    exp,
    max_queue_size: 1000,
    max_export_batch_size: 1000,
    schedule_delay: 5_000
  )
end

#trace_url(span = nil) ⇒ String

Parameters:

  • span (optional OpenTelemetry::Trace::Span) (defaults to: nil)

Returns:

  • (String)


28
29
30
31
32
33
34
# File 'lib/uptrace/client.rb', line 28

def trace_url(span = nil)
  span = OpenTelemetry::Trace.current_span if span.nil?

  host = @dsn.host.delete_prefix('api.')
  trace_id = span.context.hex_trace_id
  "#{@dsn.scheme}://#{host}/search/#{@dsn.project_id}?q=#{trace_id}"
end