Class: PrometheusExporter::Server::ResqueCollector
- Inherits:
-
TypeCollector
- Object
- TypeCollector
- PrometheusExporter::Server::ResqueCollector
- Defined in:
- lib/prometheus_exporter/server/resque_collector.rb
Constant Summary collapse
- MAX_RESQUE_METRIC_AGE =
30
- RESQUE_GAUGES =
{ processed_jobs: "Total number of processed Resque jobs.", failed_jobs: "Total number of failed Resque jobs.", pending_jobs: "Total number of pending Resque jobs.", queues: "Total number of Resque queues.", workers: "Total number of Resque workers running.", working: "Total number of Resque workers working." }
Instance Method Summary collapse
- #collect(object) ⇒ Object
-
#initialize ⇒ ResqueCollector
constructor
A new instance of ResqueCollector.
- #metrics ⇒ Object
- #type ⇒ Object
Constructor Details
#initialize ⇒ ResqueCollector
Returns a new instance of ResqueCollector.
15 16 17 18 |
# File 'lib/prometheus_exporter/server/resque_collector.rb', line 15 def initialize @resque_metrics = [] @gauges = {} end |
Instance Method Details
#collect(object) ⇒ Object
42 43 44 45 46 47 48 |
# 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 ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# 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 ⇒ Object
20 21 22 |
# File 'lib/prometheus_exporter/server/resque_collector.rb', line 20 def type "resque" end |