Class: Gruf::Prometheus::Client::Collector

Inherits:
Bigcommerce::Prometheus::Collectors::Base
  • Object
show all
Defined in:
lib/gruf/prometheus/client/collector.rb

Overview

Prometheus instrumentor for gRPC clients

Constant Summary collapse

RESPONSE_CODE_OK =
'OK'
FAILURE_CLASSES =
%w[
  GRPC::Unknown
  GRPC::Internal
  GRPC::DataLoss
  GRPC::FailedPrecondition
  GRPC::Unavailable
  GRPC::DeadlineExceeded
  GRPC::Cancelled
].freeze

Instance Method Summary collapse

Instance Method Details

#completed(request_context:, result:) ⇒ Object

Parameters:

  • request_context (Gruf::Controller::RequestContext)
  • result (Gruf::Interceptors::Timer::Result)


63
64
65
66
67
68
# File 'lib/gruf/prometheus/client/collector.rb', line 63

def completed(request_context:, result:)
  push(
    grpc_client_completed: 1,
    custom_labels: custom_labels(request_context:, result:)
  )
end

#completed_latency_seconds(request_context:, result:) ⇒ Object

Parameters:

  • request_context (Gruf::Outbound::RequestContext)
  • result (Gruf::Interceptors::Timer::Result)


74
75
76
77
78
79
# File 'lib/gruf/prometheus/client/collector.rb', line 74

def completed_latency_seconds(request_context:, result:)
  push(
    grpc_client_completed_latency_seconds: result.elapsed.to_f,
    custom_labels: custom_labels(request_context:, result:)
  )
end

#failed_total(request_context:, result:) ⇒ Object

Parameters:

  • request_context (Gruf::Controller::RequestContext)
  • result (Gruf::Interceptors::Timer::Result)


50
51
52
53
54
55
56
57
# File 'lib/gruf/prometheus/client/collector.rb', line 50

def failed_total(request_context:, result:)
  return unless failure?(result)

  push(
    grpc_client_failed_total: 1,
    custom_labels: custom_labels(request_context:)
  )
end

#started_total(request_context:) ⇒ Object

Parameters:

  • request_context (Gruf::Outbound::RequestContext)


39
40
41
42
43
44
# File 'lib/gruf/prometheus/client/collector.rb', line 39

def started_total(request_context:)
  push(
    grpc_client_started_total: 1,
    custom_labels: custom_labels(request_context:)
  )
end