class Uptrace::Client
Uptrace
client that configures OpenTelemetry SDK to use Uptrace
exporter.
Public Class Methods
new(dsn: '')
click to toggle source
@param [string] dsn
# 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://TOKEN@api.uptrace.dev/PROJECT_ID') end end
Public Instance Methods
disabled?()
click to toggle source
# File lib/uptrace/client.rb, line 22 def disabled? @disabled end
span_processor()
click to toggle source
@return [OpenTelemetry::SDK::Trace::Export::BatchSpanProcessor]
# 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)
click to toggle source
@param [optional OpenTelemetry::Trace::Span] span @return [String]
# 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