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.
16
17
18
19
20
|
# File 'lib/prometheus_exporter/instrumentation/sidekiq_queue.rb', line 16
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
13
14
|
# 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 do
client.send_json(sidekiq_queue_collector.collect)
end
super
end
|
Instance Method Details
#collect ⇒ Object
22
23
24
25
26
27
|
# File 'lib/prometheus_exporter/instrumentation/sidekiq_queue.rb', line 22
def collect
{
type: 'sidekiq_queue',
queues: collect_queue_stats
}
end
|
#collect_queue_stats ⇒ Object
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/prometheus_exporter/instrumentation/sidekiq_queue.rb', line 29
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
|