class Gruf::Prometheus::Server::Interceptor
Server
interceptor for measuring counter/timers for gRPC inbound requests
Public Instance Methods
call(&block)
click to toggle source
Intercept the call and send metrics
# File lib/gruf/prometheus/server/interceptor.rb, line 28 def call(&block) result = ::Gruf::Interceptors::Timer.time(&block) send_metrics(result) raise result.message unless result.successful? result.message end
Private Instance Methods
measure_latency?()
click to toggle source
@return [Boolean]
# File lib/gruf/prometheus/server/interceptor.rb, line 62 def measure_latency? unless @measure_latency v = @options.fetch(:measure_latency, ::Gruf::Prometheus.server_measure_latency) @measure_latency = v.nil? ? false : v end @measure_latency end
prometheus_collector()
click to toggle source
@return [::Gruf::Prometheus::Server::Collector]
# File lib/gruf/prometheus/server/interceptor.rb, line 55 def prometheus_collector @prometheus_collector ||= ::Gruf::Prometheus::Server::Collector.new(type: 'grpc_server') end
send_metrics(result)
click to toggle source
@param [Gruf::Interceptors::Timer::Result] result
# File lib/gruf/prometheus/server/interceptor.rb, line 43 def send_metrics(result) prometheus_collector.started_total(request: request) prometheus_collector.handled_total(request: request, result: result) prometheus_collector.handled_latency_seconds(request: request, result: result) if measure_latency? rescue StandardError => e # we don't want this to affect actual RPC execution, so just log an error and move on Gruf.logger.error "Failed registering metric to prometheus type collector: #{e.message} - #{e.class.name}" end