class PrometheusExporter::Server::ResqueCollector

Constants

MAX_RESQUE_METRIC_AGE
RESQUE_GAUGES

Attributes

gauges[R]
resque_metrics[R]

Public Class Methods

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

Public Instance Methods

collect(object) click to toggle source
# File lib/prometheus_exporter/server/resque_collector.rb, line 42
def collect(object)
  now = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)

  object["created_at"] = now
  resque_metrics.delete_if { |metric| metric["created_at"] + MAX_RESQUE_METRIC_AGE < now }
  resque_metrics << object
end
metrics() click to toggle source
# File lib/prometheus_exporter/server/resque_collector.rb, line 24
def metrics
  return [] if resque_metrics.length == 0

  resque_metrics.map do |metric|
    labels = metric.fetch("custom_labels", {})

    RESQUE_GAUGES.map do |name, help|
      name = name.to_s
      if value = metric[name]
        gauge = gauges[name] ||= PrometheusExporter::Metric::Gauge.new("resque_#{name}", help)
        gauge.observe(value, labels)
      end
    end
  end

  gauges.values
end
type() click to toggle source
# File lib/prometheus_exporter/server/resque_collector.rb, line 20
def type
  "resque"
end