Class: Gruf::Prometheus::Collector
- Inherits:
-
Bigcommerce::Prometheus::Collectors::Base
- Object
- Bigcommerce::Prometheus::Collectors::Base
- Gruf::Prometheus::Collector
- Defined in:
- lib/gruf/prometheus/collector.rb
Overview
Prometheus instrumentor for gRPC servers
Instance Method Summary collapse
- #collect(metrics = {}) ⇒ Object
- #collect_server_metrics(rpc_server, metrics) ⇒ Object
- #grpc_server ⇒ GRPC::RpcServer
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
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_server ⇒ GRPC::RpcServer
51 52 53 |
# File 'lib/gruf/prometheus/collector.rb', line 51 def grpc_server @options.fetch(:server, nil)&.server end |