Class: Temporalio::Contrib::OpenTelemetry::TracingInterceptor

Inherits:
Object
  • Object
show all
Includes:
Temporalio::Client::Interceptor, Worker::Interceptor::Activity, Worker::Interceptor::Workflow
Defined in:
lib/temporalio/contrib/open_telemetry.rb

Overview

Tracing interceptor to add OpenTelemetry traces to clients, activities, and workflows.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tracer, header_key: '_tracer-data', propagator: ::OpenTelemetry::Context::Propagation::CompositeTextMapPropagator.compose_propagators( [ ::OpenTelemetry::Trace::Propagation::TraceContext::TextMapPropagator.new, ::OpenTelemetry::Baggage::Propagation::TextMapPropagator.new ] ), always_create_workflow_spans: false) ⇒ TracingInterceptor

Create interceptor.

Parameters:

  • tracer (OpenTelemetry::Trace::Tracer)

    Tracer to use.

  • header_key (String) (defaults to: '_tracer-data')

    Temporal header name to serialize spans to/from. Most users should not change this.

  • propagator (Object) (defaults to: ::OpenTelemetry::Context::Propagation::CompositeTextMapPropagator.compose_propagators( [ ::OpenTelemetry::Trace::Propagation::TraceContext::TextMapPropagator.new, ::OpenTelemetry::Baggage::Propagation::TextMapPropagator.new ] ))

    Propagator to use. Most users should not change this.

  • always_create_workflow_spans (Boolean) (defaults to: false)

    When false, the default, spans are only created in workflows when an overarching span from the client is present. In cases of starting a workflow elsewhere, e.g. CLI or schedules, a client-created span is not present and workflow spans will not be created. Setting this to true will create spans in workflows no matter what, but there is a risk of them being orphans since they may not have a parent span after replaying.



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/temporalio/contrib/open_telemetry.rb', line 31

def initialize(
  tracer,
  header_key: '_tracer-data',
  propagator: ::OpenTelemetry::Context::Propagation::CompositeTextMapPropagator.compose_propagators(
    [
      ::OpenTelemetry::Trace::Propagation::TraceContext::TextMapPropagator.new,
      ::OpenTelemetry::Baggage::Propagation::TextMapPropagator.new
    ]
  ),
  always_create_workflow_spans: false
)
  @tracer = tracer
  @header_key = header_key
  @propagator = propagator
  @always_create_workflow_spans = always_create_workflow_spans
end

Instance Attribute Details

#tracerOpenTelemetry::Trace::Tracer (readonly)

Returns Tracer in use.

Returns:

  • (OpenTelemetry::Trace::Tracer)

    Tracer in use.



19
20
21
# File 'lib/temporalio/contrib/open_telemetry.rb', line 19

def tracer
  @tracer
end