Loading lib/labkit/tracing/abstract_instrumenter.rb +7 −8 Original line number Diff line number Diff line Loading @@ -7,27 +7,26 @@ module Labkit # https://edgeapi.rubyonrails.org/classes/ActiveSupport/Notifications/Instrumenter.html#method-c-new class AbstractInstrumenter def start(_name, _id, payload) scope = Labkit::Tracing::TracingUtils.tracer.start_active_span(span_name(payload)) span_wrapper = Labkit::Tracing::TracingUtils.tracer.start_active_span(span_name(payload)) scope_stack.push scope scope_stack.push span_wrapper end def finish(_name, _id, payload) scope = scope_stack.pop span = scope.span span_wrapper = scope_stack.pop Labkit::Tracing::TracingUtils.log_common_fields_on_span(span, span_name(payload)) Labkit::Tracing::TracingUtils.log_common_fields_on_span(span_wrapper, span_name(payload)) # exception_object is the standard exception payload from ActiveSupport::Notifications # https://github.com/rails/rails/blob/v6.0.3.1/activesupport/lib/active_support/notifications/instrumenter.rb#L26 exception = payload[:exception_object].presence || payload[:exception].presence span.set_error(exception) span_wrapper.set_error(exception) tags(payload).each do |k, v| span.set_tag(k, v) span_wrapper.set_tag(k, v) end scope.close span_wrapper.close end def scope_stack Loading lib/labkit/tracing/adapters/opentelemetry_span.rb +4 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,10 @@ module Labkit end end def close(**opts) finish(**opts) end def context span.context end Loading lib/labkit/tracing/adapters/opentelemetry_tracer.rb +12 −0 Original line number Diff line number Diff line Loading @@ -91,6 +91,18 @@ module Labkit @token = token end def set_tag(key, value) span.set_tag(key, value) end def set_error(exception) span.set_error(exception) end def log_event(name, **attributes) span.log_event(name, **attributes) end def close @raw_span.finish OpenTelemetry::Context.detach(@token) Loading lib/labkit/tracing/adapters/opentracing_span.rb +4 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,10 @@ module Labkit scope&.close end def close finish end def context span.context end Loading lib/labkit/tracing/adapters/opentracing_tracer.rb +5 −2 Original line number Diff line number Diff line Loading @@ -34,15 +34,18 @@ module Labkit end def active_span OpenTracing.active_span span = OpenTracing.active_span OpentracingSpan.new(span) if span end def start_active_span(operation_name, tags: nil) if tags scope = if tags OpenTracing.start_active_span(operation_name, tags: tags) else OpenTracing.start_active_span(operation_name) end OpentracingSpan.new(scope) end end end Loading Loading
lib/labkit/tracing/abstract_instrumenter.rb +7 −8 Original line number Diff line number Diff line Loading @@ -7,27 +7,26 @@ module Labkit # https://edgeapi.rubyonrails.org/classes/ActiveSupport/Notifications/Instrumenter.html#method-c-new class AbstractInstrumenter def start(_name, _id, payload) scope = Labkit::Tracing::TracingUtils.tracer.start_active_span(span_name(payload)) span_wrapper = Labkit::Tracing::TracingUtils.tracer.start_active_span(span_name(payload)) scope_stack.push scope scope_stack.push span_wrapper end def finish(_name, _id, payload) scope = scope_stack.pop span = scope.span span_wrapper = scope_stack.pop Labkit::Tracing::TracingUtils.log_common_fields_on_span(span, span_name(payload)) Labkit::Tracing::TracingUtils.log_common_fields_on_span(span_wrapper, span_name(payload)) # exception_object is the standard exception payload from ActiveSupport::Notifications # https://github.com/rails/rails/blob/v6.0.3.1/activesupport/lib/active_support/notifications/instrumenter.rb#L26 exception = payload[:exception_object].presence || payload[:exception].presence span.set_error(exception) span_wrapper.set_error(exception) tags(payload).each do |k, v| span.set_tag(k, v) span_wrapper.set_tag(k, v) end scope.close span_wrapper.close end def scope_stack Loading
lib/labkit/tracing/adapters/opentelemetry_span.rb +4 −0 Original line number Diff line number Diff line Loading @@ -40,6 +40,10 @@ module Labkit end end def close(**opts) finish(**opts) end def context span.context end Loading
lib/labkit/tracing/adapters/opentelemetry_tracer.rb +12 −0 Original line number Diff line number Diff line Loading @@ -91,6 +91,18 @@ module Labkit @token = token end def set_tag(key, value) span.set_tag(key, value) end def set_error(exception) span.set_error(exception) end def log_event(name, **attributes) span.log_event(name, **attributes) end def close @raw_span.finish OpenTelemetry::Context.detach(@token) Loading
lib/labkit/tracing/adapters/opentracing_span.rb +4 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,10 @@ module Labkit scope&.close end def close finish end def context span.context end Loading
lib/labkit/tracing/adapters/opentracing_tracer.rb +5 −2 Original line number Diff line number Diff line Loading @@ -34,15 +34,18 @@ module Labkit end def active_span OpenTracing.active_span span = OpenTracing.active_span OpentracingSpan.new(span) if span end def start_active_span(operation_name, tags: nil) if tags scope = if tags OpenTracing.start_active_span(operation_name, tags: tags) else OpenTracing.start_active_span(operation_name) end OpentracingSpan.new(scope) end end end Loading