Class: PrometheusExporter::Instrumentation::SidekiqStats

Inherits:
Object
  • Object
show all
Defined in:
lib/prometheus_exporter/instrumentation/sidekiq_stats.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.start(client: nil, frequency: 30) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/prometheus_exporter/instrumentation/sidekiq_stats.rb', line 5

def self.start(client: nil, frequency: 30)
  client ||= PrometheusExporter::Client.default
  sidekiq_stats_collector = new

  Thread.new do
    loop do
      begin
        client.send_json(sidekiq_stats_collector.collect)
      rescue StandardError => e
        STDERR.puts("Prometheus Exporter Failed To Collect Sidekiq Stats metrics #{e}")
      ensure
        sleep frequency
      end
    end
  end
end

Instance Method Details

#collectObject



22
23
24
25
26
27
# File 'lib/prometheus_exporter/instrumentation/sidekiq_stats.rb', line 22

def collect
  {
    type: 'sidekiq_stats',
    stats: collect_stats
  }
end

#collect_statsObject



29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/prometheus_exporter/instrumentation/sidekiq_stats.rb', line 29

def collect_stats
  stats = ::Sidekiq::Stats.new
  {
    'dead_size' => stats.dead_size,
    'enqueued' => stats.enqueued,
    'failed' => stats.failed,
    'processed' => stats.processed,
    'processes_size' => stats.processes_size,
    'retry_size' => stats.retry_size,
    'scheduled_size' => stats.scheduled_size,
    'workers_size' => stats.workers_size,
  }
end