class Labkit::Tracing::GRPC::ServerInterceptor
GRPCServerInterceptor is a server-side GRPC
interceptor for instrumenting GRPC
calls with distributed tracing in a GRPC
Ruby server
Public Instance Methods
bidi_streamer(requests: nil, call: nil, method: nil) { || ... }
click to toggle source
# File lib/labkit/tracing/grpc/server_interceptor.rb, line 36 def bidi_streamer(requests: nil, call: nil, method: nil) wrap_with_tracing(call, method, "bidi_stream") do yield end end
client_streamer(call: nil, method: nil) { || ... }
click to toggle source
# File lib/labkit/tracing/grpc/server_interceptor.rb, line 24 def client_streamer(call: nil, method: nil) wrap_with_tracing(call, method, "client_stream") do yield end end
request_response(request: nil, call: nil, method: nil) { || ... }
click to toggle source
# File lib/labkit/tracing/grpc/server_interceptor.rb, line 18 def request_response(request: nil, call: nil, method: nil) wrap_with_tracing(call, method, "unary") do yield end end
server_streamer(request: nil, call: nil, method: nil) { || ... }
click to toggle source
# File lib/labkit/tracing/grpc/server_interceptor.rb, line 30 def server_streamer(request: nil, call: nil, method: nil) wrap_with_tracing(call, method, "server_stream") do yield end end
Private Instance Methods
wrap_with_tracing(call, method, grpc_type) { || ... }
click to toggle source
# File lib/labkit/tracing/grpc/server_interceptor.rb, line 44 def wrap_with_tracing(call, method, grpc_type) context = TracingUtils.tracer.extract(OpenTracing::FORMAT_TEXT_MAP, call.metadata) method_name = "/#{rpc_split(method).join("/")}" tags = { "component" => "grpc", "span.kind" => "server", "grpc.method" => method_name, "grpc.type" => grpc_type, } TracingUtils.with_tracing(operation_name: "grpc:#{method_name}", child_of: context, tags: tags) do |_span| yield end end