Class: PrometheusExporter::Instrumentation::SidekiqQueue
- Inherits:
-
PeriodicStats
- Object
- PeriodicStats
- PrometheusExporter::Instrumentation::SidekiqQueue
show all
- Defined in:
- lib/prometheus_exporter/instrumentation/sidekiq_queue.rb
Class Method Summary
collapse
Instance Method Summary
collapse
started?, stop, worker_loop
Constructor Details
#initialize(all_queues: false) ⇒ SidekiqQueue
Returns a new instance of SidekiqQueue.
14
15
16
17
18
|
# File 'lib/prometheus_exporter/instrumentation/sidekiq_queue.rb', line 14
def initialize(all_queues: false)
@all_queues = all_queues
@pid = ::Process.pid
@hostname = Socket.gethostname
end
|
Class Method Details
.start(client: nil, frequency: 30, all_queues: false) ⇒ Object
5
6
7
8
9
10
11
12
|
# File 'lib/prometheus_exporter/instrumentation/sidekiq_queue.rb', line 5
def self.start(client: nil, frequency: 30, all_queues: false)
client ||= PrometheusExporter::Client.default
sidekiq_queue_collector = new(all_queues: all_queues)
worker_loop { client.send_json(sidekiq_queue_collector.collect) }
super
end
|
Instance Method Details
#collect ⇒ Object
20
21
22
|
# File 'lib/prometheus_exporter/instrumentation/sidekiq_queue.rb', line 20
def collect
{ type: "sidekiq_queue", queues: collect_queue_stats }
end
|
#collect_queue_stats ⇒ Object
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
# File 'lib/prometheus_exporter/instrumentation/sidekiq_queue.rb', line 24
def collect_queue_stats
sidekiq_queues = ::Sidekiq::Queue.all
unless @all_queues
queues = collect_current_process_queues
sidekiq_queues.select! { |sidekiq_queue| queues.include?(sidekiq_queue.name) }
end
sidekiq_queues
.map do |queue|
{
backlog: queue.size,
latency_seconds: queue.latency.to_i,
labels: {
queue: queue.name,
},
}
end
.compact
end
|