module Gruf::StackdriverTrace::Label

Public Instance Methods

get_host(request) click to toggle source
# File lib/gruf/stackdriver_trace/label.rb, line 44
def get_host(request)
  if request_context?(request)
    # get request host from GRPC::ActiveCall::InterceptableView
    request.call.instance_variable_get(:@wrapped).try(:peer)
  else
    request.active_call.peer
  end
end
get_ua(request) click to toggle source
# File lib/gruf/stackdriver_trace/label.rb, line 39
def get_ua(request)
  metadata = request_context?(request) ? request.metadata : request.active_call.metadata
  metadata['user-agent'] || nil
end
label_key() click to toggle source
# File lib/gruf/stackdriver_trace/label.rb, line 11
def label_key
  Google::Cloud::Trace::LabelKey
end
request_context?(request) click to toggle source
# File lib/gruf/stackdriver_trace/label.rb, line 53
def request_context?(request)
  request.is_a?(Gruf::Outbound::RequestContext)
end
set_basic_labels(labels, request, method_name) click to toggle source
# File lib/gruf/stackdriver_trace/label.rb, line 19
def set_basic_labels(labels, request, method_name)
  set_label(labels, label_key::AGENT, Gruf::StackdriverTrace::AGENT_NAME)
  set_label(labels, label_key::HTTP_HOST, get_host(request))
  set_label(labels, label_key::HTTP_CLIENT_PROTOCOL, 'http2')
  set_label(labels, label_key::HTTP_USER_AGENT, get_ua(request))
  set_label(labels, label_key::HTTP_URL, method_name)
  set_label(labels, label_key::PID, ::Process.pid)
  set_label(labels, label_key::TID, ::Thread.current.object_id)
end
set_grpc_status_code(labels, status_code) click to toggle source
# File lib/gruf/stackdriver_trace/label.rb, line 35
def set_grpc_status_code(labels, status_code)
  set_label(labels, label_key::RPC_STATUS_CODE, status_code_to_label(status_code))
end
set_label(labels, key, value) click to toggle source
# File lib/gruf/stackdriver_trace/label.rb, line 15
def set_label(labels, key, value)
  labels[key] = value.to_s
end
set_stack_trace(span, skip_frames) click to toggle source
# File lib/gruf/stackdriver_trace/label.rb, line 29
def set_stack_trace(span, skip_frames)
  tc = span.trace.trace_context
  return unless tc.capture_stack?
  label_key.set_stack_trace(span.labels, skip_frames: skip_frames)
end
status_code_to_label(code) click to toggle source
# File lib/gruf/stackdriver_trace/label.rb, line 4
def status_code_to_label(code)
  @lookup ||= Hash[GRPC::Core::StatusCodes.constants.map do |c|
    [GRPC::Core::StatusCodes.const_get(c), c.to_s]
  end]
  @lookup[code]
end