class PrometheusClientAddons::Prometheus::Client::Puma
Constants
- HANDLES
Attributes
control_auth_token[RW]
control_url[RW]
Public Instance Methods
extract(input, output, nested, label_set = {})
click to toggle source
# File lib/prometheus_client_addons/prometheus/client/puma.rb, line 44 def extract(input, output, nested, label_set = {}) key = if input.key?(nested.last.to_s) nested.last.to_s elsif input.key?(nested.last.to_sym) nested.last.to_sym end return unless key output["#{prefix}#{nested.join('_')}".to_sym] ||= {} output["#{prefix}#{nested.join('_')}".to_sym][label_set] = input[key] end
multi_name_docstring()
click to toggle source
# File lib/prometheus_client_addons/prometheus/client/puma.rb, line 40 def multi_name_docstring Hash[HANDLES.map { |key, value| ["#{prefix}#{key}".to_sym, value] }] end
multi_name_type()
click to toggle source
# File lib/prometheus_client_addons/prometheus/client/puma.rb, line 35 def multi_name_type full_handles = HANDLES.keys.map { |key| "#{prefix}#{key}" }.map(&:to_sym) Hash[full_handles.zip([:gauge] * HANDLES.size)] end
multi_values()
click to toggle source
# File lib/prometheus_client_addons/prometheus/client/puma.rb, line 56 def multi_values body = Socket.unix(self.class.control_url.gsub("unix://", '')) do |socket| socket << "GET /stats?token=#{self.class.control_auth_token} HTTP/1.0\r\n\r\n" socket.read end data = JSON.parse(body.split("\n").last, symbolize_names: true) result = {} extract(data, result, [:backlog]) extract(data, result, [:running]) extract(data, result, [:pool_capacity]) extract(data, result, [:max_threads]) extract(data, result, [:workers]) extract(data, result, [:phase]) extract(data, result, [:booted_workers]) extract(data, result, [:old_workers]) if data.key?(:worker_status) && !data[:worker_status].empty? data[:worker_status].each do |worker_status| worker_index = worker_status[:index] extract(worker_status, result, [:worker_status, :phase], { worker_index: worker_index }) extract(worker_status, result, [:worker_status, :booted], { worker_index: worker_index }) extract(worker_status, result, [:worker_status, :last_checkin], { worker_index: worker_index }) last_status = worker_status[:last_status] extract(last_status, result, [:worker_status, :last_status, :backlog], { worker_index: worker_index }) extract(last_status, result, [:worker_status, :last_status, :running], { worker_index: worker_index }) extract(last_status, result, [:worker_status, :last_status, :pool_capacity], { worker_index: worker_index }) extract(last_status, result, [:worker_status, :last_status, :max_threads], { worker_index: worker_index }) end end result end