class Rabbitek::Utils::OpenTracing

OpenTracing helpers

Constants

OPENTRACING_COMPONENT
OPENTRACING_KIND_CLIENT
OPENTRACING_KIND_SERVER

Public Class Methods

client_options(params) click to toggle source
# File lib/rabbitek/utils/open_tracing.rb, line 17
def client_options(params)
  {
    tags: {
      'component' => OPENTRACING_COMPONENT,
      'span.kind' => OPENTRACING_KIND_CLIENT,
      'rabbitmq.routing_key' => params[:routing_key]
    }
  }
end
inject!(span, carrier) click to toggle source
# File lib/rabbitek/utils/open_tracing.rb, line 13
def inject!(span, carrier)
  ::OpenTracing.inject(span.context, ::OpenTracing::FORMAT_TEXT_MAP, carrier)
end
log_error(span, err) click to toggle source
# File lib/rabbitek/utils/open_tracing.rb, line 45
def log_error(span, err)
  span.set_tag('error', true)
  span.log_kv(
    event: 'error',
    'error.kind': err.class.to_s,
    'error.object': err,
    message: err.message
  )
end
server_options(delivery_info, properties) click to toggle source
# File lib/rabbitek/utils/open_tracing.rb, line 27
def server_options(delivery_info, properties)
  references = server_references(properties)

  options = {
    tags: {
      'component' => OPENTRACING_COMPONENT,
      'span.kind' => OPENTRACING_KIND_SERVER,
      'rabbitmq.routing_key' => delivery_info.routing_key,
      'rabbitmq.jid' => Thread.current[:rabbit_context][:jid],
      'rabbitmq.queue' => Thread.current[:rabbit_context][:queue],
      'rabbitmq.worker' => Thread.current[:rabbit_context][:consumer]
    }
  }

  options[:references] = [references] if references
  options
end

Private Class Methods

extract(message_properties) click to toggle source
# File lib/rabbitek/utils/open_tracing.rb, line 64
def extract(message_properties)
  ::OpenTracing.extract(::OpenTracing::FORMAT_TEXT_MAP, message_properties.headers)
end
server_references(message_properties) click to toggle source
# File lib/rabbitek/utils/open_tracing.rb, line 57
def server_references(message_properties)
  ctx = extract(message_properties)
  return unless ctx

  ::OpenTracing::Reference.follows_from(ctx)
end