Class: GrpcInterceptors::Server::StatsDMetrics

Inherits:
GRPC::ServerInterceptor
  • Object
show all
Defined in:
lib/grpc_interceptors/server/statsd_metrics.rb

Instance Method Summary collapse

Instance Method Details

#request_response(request: nil, call: nil, method: nil, metadata: nil) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/grpc_interceptors/server/statsd_metrics.rb', line 6

def request_response(request: nil, call: nil, method: nil, metadata: nil)
  start_time = Time.now
  code = GRPC::Core::StatusCodes::OK
  labels = common_labels(method)
  labels[:grpc_type] = 'unary'

  yield
rescue StandardError => e
  code = e.is_a?(GRPC::BadStatus) ? e.code : GRPC::Core::StatusCodes::UNKNOWN
  raise
ensure
  labels.merge(grpc_code: code)
  elapsed_time = Time.now - start_time
  StatsD.histogram('grpc_latency_seconds', elapsed_time, tags: labels)
end