class Gruf::Prometheus::Collector
Prometheus
instrumentor for gRPC servers
Public Instance Methods
collect(metrics = {})
click to toggle source
# 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)
click to toggle source
@param [GRPC::RpcServer] rpc_server @param [Hash] metrics
# 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_server()
click to toggle source
@return [GRPC::RpcServer]
# File lib/gruf/prometheus/collector.rb, line 51 def grpc_server @options.fetch(:server, nil)&.server end