Module: Uptrace

Extended by:
Uptrace
Included in:
Uptrace
Defined in:
lib/uptrace.rb,
lib/uptrace/dsn.rb,
lib/uptrace/client.rb,
lib/uptrace/version.rb,
lib/uptrace/id_generator.rb

Overview

Uptrace provides Uptrace exporters for OpenTelemetry.

Defined Under Namespace

Modules: IdGenerator Classes: Client, DSN

Constant Summary collapse

VERSION =
'1.8.1'

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#loggerObject

Returns the value of attribute logger.



18
19
20
# File 'lib/uptrace.rb', line 18

def logger
  @logger
end

Instance Method Details

#configure_opentelemetry(dsn: '') {|c| ... } ⇒ Object

ConfigureOpentelemetry configures OpenTelemetry to export data to Uptrace. Specifically it configures and registers Uptrace span exporter.

Yield Parameters:

  • c (OpenTelemetry::SDK::Configurator)

    Yields a configurator to the provided block



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/uptrace.rb', line 34

def configure_opentelemetry(dsn: '')
  @client = Client.new(dsn: dsn)
  return if @client.disabled?

  OpenTelemetry::SDK.configure do |c|
    # Set default IdGenerator and let users override
    c.id_generator = Uptrace::IdGenerator
    c.add_span_processor(span_processor(@client.dsn))

    yield c if block_given?

    # Merge resource
    current_resource = c.instance_variable_get(:@resource)
    current_resource ||= OpenTelemetry::SDK::Resources::Resource.create

    host_resource = OpenTelemetry::SDK::Resources::Resource.create(
      'host.name' => Socket.gethostname
    )
    c.resource = current_resource.merge(host_resource)
  end

  me = metric_exporter(@client.dsn)
  OpenTelemetry.meter_provider.add_metric_reader(me)

  le = log_exporter(@client.dsn)
  processor = OpenTelemetry::SDK::Logs::Export::BatchLogRecordProcessor.new(le)
  OpenTelemetry.logger_provider.add_log_record_processor(processor)
end

#trace_url(span = nil) ⇒ String



24
25
26
# File 'lib/uptrace.rb', line 24

def trace_url(span = nil)
  @client.trace_url(span)
end