class Puma::Metrics::Parser
Public Class Methods
new(clustered: false)
click to toggle source
# File lib/puma/metrics/parser.rb, line 8 def initialize(clustered: false) register_default_metrics register_clustered_metrics if clustered end
Public Instance Methods
parse(symbol_keyed_stats, labels = {})
click to toggle source
# File lib/puma/metrics/parser.rb, line 13 def parse(symbol_keyed_stats, labels = {}) symbol_keyed_stats.each do |key, value| value.each { |s| parse(s, labels.merge(index: s[:index])) } if key == :worker_status parse(value, labels) if key == :last_status update_metric(key, value, labels) end end
Private Instance Methods
register_clustered_metrics()
click to toggle source
# File lib/puma/metrics/parser.rb, line 23 def register_clustered_metrics registry.gauge(:puma_booted_workers, docstring: 'Number of booted workers') .set(1) registry.gauge(:puma_old_workers, docstring: 'Number of old workers') .set(0) end
register_default_metrics()
click to toggle source
# File lib/puma/metrics/parser.rb, line 32 def register_default_metrics # rubocop:disable Metrics/MethodLength registry.gauge(:puma_backlog, docstring: 'Number of established but unaccepted connections in the backlog', labels: [:index], preset_labels: { index: 0 }) registry.gauge(:puma_running, docstring: 'Number of running worker threads', labels: [:index], preset_labels: { index: 0 }) registry.gauge(:puma_pool_capacity, docstring: 'Number of allocatable worker threads', labels: [:index], preset_labels: { index: 0 }) registry.gauge(:puma_max_threads, docstring: 'Maximum number of worker threads', labels: [:index], preset_labels: { index: 0 }) registry.gauge(:puma_requests_count, docstring: 'Number of processed requests', labels: [:index], preset_labels: { index: 0 }) registry.gauge(:puma_workers, docstring: 'Number of configured workers') .set(1) end
registry()
click to toggle source
# File lib/puma/metrics/parser.rb, line 58 def registry Prometheus::Client.registry end
update_metric(key, value, labels)
click to toggle source
# File lib/puma/metrics/parser.rb, line 62 def update_metric(key, value, labels) return if registry.get("puma_#{key}").nil? registry.get("puma_#{key}").set(value, labels: labels) end