class PrometheusExporter::Server::SidekiqQueueCollector

Constants

MAX_SIDEKIQ_METRIC_AGE
SIDEKIQ_QUEUE_GAUGES

Attributes

gauges[R]
sidekiq_metrics[R]

Public Class Methods

new() click to toggle source
# File lib/prometheus_exporter/server/sidekiq_queue_collector.rb, line 13
def initialize
  @sidekiq_metrics = []
  @gauges = {}
end

Public Instance Methods

collect(object) click to toggle source
# File lib/prometheus_exporter/server/sidekiq_queue_collector.rb, line 36
def collect(object)
  now = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
  object['queues'].each do |queue|
    queue["created_at"] = now
    queue["labels"].merge!(object['custom_labels']) if object['custom_labels']
    sidekiq_metrics.delete_if { |metric| metric['created_at'] + MAX_SIDEKIQ_METRIC_AGE < now }
    sidekiq_metrics << queue
  end
end
metrics() click to toggle source
# File lib/prometheus_exporter/server/sidekiq_queue_collector.rb, line 22
def metrics
  sidekiq_metrics.map do |metric|
    labels = metric.fetch("labels", {})
    SIDEKIQ_QUEUE_GAUGES.map do |name, help|
      if (value = metric[name])
        gauge = gauges[name] ||= PrometheusExporter::Metric::Gauge.new("sidekiq_queue_#{name}", help)
        gauge.observe(value, labels)
      end
    end
  end

  gauges.values
end
type() click to toggle source
# File lib/prometheus_exporter/server/sidekiq_queue_collector.rb, line 18
def type
  'sidekiq_queue'
end