class GRPCPrometheus::ServerInterceptor
Public Class Methods
new(server_metrics)
click to toggle source
# File lib/grpc_prometheus/server_interceptor.rb, line 3 def initialize(server_metrics) @server_metrics = server_metrics end
Public Instance Methods
bidi_streamer(requests: nil, call: nil, method: nil) { || ... }
click to toggle source
# File lib/grpc_prometheus/server_interceptor.rb, line 74 def bidi_streamer(requests: nil, call: nil, method: nil) reporter = ServerReporter.new( server_metrics: @server_metrics, method: method, grpc_type: GRPCType::BIDI_STREAM, ) grpc_err = nil yield rescue => err grpc_err = to_grpc_err(err) raise err ensure if grpc_err reporter.handled(Util::ALL_CODES[grpc_err.code]) else reporter.handled(Util::ALL_CODES[::GRPC::Core::StatusCodes::OK]) end end
client_streamer(call: nil, method: nil) { || ... }
click to toggle source
These metrics for streaming messages can't be collected with the current gRPC implementation in Ruby
-
grpc_server_msg_received_total
-
grpc_server_msg_sent_total
Need to wait for this Pull Request to be released:
# File lib/grpc_prometheus/server_interceptor.rb, line 36 def client_streamer(call: nil, method: nil) reporter = ServerReporter.new( server_metrics: @server_metrics, method: method, grpc_type: GRPCType::CLIENT_STREAM, ) grpc_err = nil yield rescue => err grpc_err = to_grpc_err(err) raise err ensure if grpc_err reporter.handled(Util::ALL_CODES[grpc_err.code]) else reporter.handled(Util::ALL_CODES[::GRPC::Core::StatusCodes::OK]) end end
request_response(request: nil, call: nil, method: nil) { || ... }
click to toggle source
# File lib/grpc_prometheus/server_interceptor.rb, line 7 def request_response(request: nil, call: nil, method: nil) reporter = ServerReporter.new( server_metrics: @server_metrics, method: method, grpc_type: GRPCType::UNARY, ) grpc_err = nil yield rescue => err grpc_err = to_grpc_err(err) raise err ensure if grpc_err reporter.handled(Util::ALL_CODES[grpc_err.code]) else reporter.handled(Util::ALL_CODES[::GRPC::Core::StatusCodes::OK]) end end
server_streamer(request: nil, call: nil, method: nil) { || ... }
click to toggle source
# File lib/grpc_prometheus/server_interceptor.rb, line 55 def server_streamer(request: nil, call: nil, method: nil) reporter = ServerReporter.new( server_metrics: @server_metrics, method: method, grpc_type: GRPCType::SERVER_STREAM, ) grpc_err = nil yield rescue => err grpc_err = to_grpc_err(err) raise err ensure if grpc_err reporter.handled(Util::ALL_CODES[grpc_err.code]) else reporter.handled(Util::ALL_CODES[::GRPC::Core::StatusCodes::OK]) end end
Private Instance Methods
to_grpc_err(err)
click to toggle source
# File lib/grpc_prometheus/server_interceptor.rb, line 95 def to_grpc_err(err) if err.is_a?(::GRPC::BadStatus) err else ::GRPC::BadStatus.new_status_exception( ::GRPC::Core::StatusCodes::UNKNOWN, err.message ) end end