Module: Gruf::StackdriverTrace::Label
- Included in:
- ClientInterceptor, ServerInterceptor
- Defined in:
- lib/gruf/stackdriver_trace/label.rb
Instance Method Summary collapse
- #get_host(request) ⇒ Object
- #get_ua(request) ⇒ Object
- #label_key ⇒ Object
- #request_context?(request) ⇒ Boolean
- #set_basic_labels(labels, request, method_name) ⇒ Object
- #set_grpc_status_code(labels, status_code) ⇒ Object
- #set_label(labels, key, value) ⇒ Object
- #set_stack_trace(span, skip_frames) ⇒ Object
- #status_code_to_label(code) ⇒ Object
Instance Method Details
#get_host(request) ⇒ Object
44 45 46 47 48 49 50 51 |
# 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) ⇒ Object
39 40 41 42 |
# File 'lib/gruf/stackdriver_trace/label.rb', line 39 def get_ua(request) = request_context?(request) ? request. : request.active_call. ['user-agent'] || nil end |
#label_key ⇒ Object
11 12 13 |
# File 'lib/gruf/stackdriver_trace/label.rb', line 11 def label_key Google::Cloud::Trace::LabelKey end |
#request_context?(request) ⇒ Boolean
53 54 55 |
# 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) ⇒ Object
19 20 21 22 23 24 25 26 27 |
# 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) ⇒ Object
35 36 37 |
# 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) ⇒ Object
15 16 17 |
# 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) ⇒ Object
29 30 31 32 33 |
# 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) ⇒ Object
4 5 6 7 8 9 |
# 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 |