Module: Pigeon::TraceAPI

Defined in:
lib/pigeon/trace_api.rb

Overview

Tracing API for Pigeon

Class Method Summary collapse

Class Method Details

.init_tracing(service_name: "pigeon", exporter: nil) ⇒ Boolean

Initialize OpenTelemetry tracing

Parameters:

  • service_name (String) (defaults to: "pigeon")

    Service name for traces

  • exporter (OpenTelemetry::Exporter::OTLP::Exporter, nil) (defaults to: nil)

    Optional custom exporter

Returns:

  • (Boolean)

    Whether initialization was successful



10
11
12
# File 'lib/pigeon/trace_api.rb', line 10

def self.init_tracing(service_name: "pigeon", exporter: nil)
  Tracing.init(service_name: service_name, exporter: exporter)
end

.tracer(name = "pigeon") ⇒ OpenTelemetry::Tracer?

Get the OpenTelemetry tracer

Parameters:

  • name (String) (defaults to: "pigeon")

    Tracer name

Returns:

  • (OpenTelemetry::Tracer, nil)

    Tracer or nil if OpenTelemetry is not available



23
24
25
# File 'lib/pigeon/trace_api.rb', line 23

def self.tracer(name = "pigeon")
  Tracing.tracer(name)
end

.tracing_available?Boolean

Check if OpenTelemetry tracing is available

Returns:

  • (Boolean)

    Whether OpenTelemetry is available



16
17
18
# File 'lib/pigeon/trace_api.rb', line 16

def self.tracing_available?
  Tracing.available?
end

.with_span(name, attributes: {}, kind: :internal) { ... } ⇒ Object

Create a span for a block of code

Parameters:

  • name (String)

    Span name

  • attributes (Hash) (defaults to: {})

    Span attributes

  • kind (Symbol) (defaults to: :internal)

    Span kind (:internal, :server, :client, :producer, :consumer)

Yields:

  • Block to execute within the span

Returns:

  • (Object)

    Result of the block



33
34
35
# File 'lib/pigeon/trace_api.rb', line 33

def self.with_span(name, attributes: {}, kind: :internal, &)
  Tracing.with_span(name, attributes: attributes, kind: kind, &)
end