Class: Gruf::Prometheus::Collector

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

Overview

Prometheus instrumentor for gRPC servers

Instance Method Summary collapse

Instance Method Details

#collect(metrics = {}) ⇒ Object



24
25
26
27
28
29
30
31
32
33
# File 'lib/gruf/prometheus/collector.rb', line 24

def collect(metrics = {})
  metrics[:type] = 'grpc'
  rpc_server = grpc_server
  return metrics unless rpc_server

  rpc_server.instance_variable_get(:@run_mutex).synchronize do
    collect_server_metrics(rpc_server, metrics)
  end
  metrics
end

#collect_server_metrics(rpc_server, metrics) ⇒ Object

Parameters:

  • rpc_server (GRPC::RpcServer)
  • metrics (Hash)


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

def collect_server_metrics(rpc_server, metrics)
  pool = rpc_server.instance_variable_get(:@pool)
  metrics[:pool_jobs_waiting_total] = pool.jobs_waiting.to_i
  metrics[:pool_ready_workers_total] = pool.instance_variable_get(:@ready_workers).size
  metrics[:pool_workers_total] = pool.instance_variable_get(:@workers)&.size
  metrics[:pool_initial_size] = rpc_server.instance_variable_get(:@pool_size).to_i
  metrics[:poll_period] = rpc_server.instance_variable_get(:@poll_period).to_i
end

#grpc_serverGRPC::RpcServer

Returns:

  • (GRPC::RpcServer)


51
52
53
# File 'lib/gruf/prometheus/collector.rb', line 51

def grpc_server
  @options.fetch(:server, nil)&.server
end