sidekiq-prometheus-exporter 0.1.9 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +12 -2
- data/gemfiles/sidekiq_3.3.1.gemfile.lock +1 -1
- data/gemfiles/sidekiq_3.x.gemfile.lock +1 -1
- data/gemfiles/sidekiq_4.x.gemfile.lock +1 -1
- data/gemfiles/sidekiq_5.x.gemfile.lock +1 -1
- data/lib/sidekiq/prometheus/exporter/exporters.rb +1 -0
- data/lib/sidekiq/prometheus/exporter/scheduler.rb +48 -0
- data/lib/sidekiq/prometheus/exporter/templates/scheduler.erb +12 -0
- data/lib/sidekiq/prometheus/exporter/templates/standard.erb +5 -5
- data/lib/sidekiq/prometheus/exporter/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 158112bb6619ff47bb38fd43801aaa1a01c95103
|
4
|
+
data.tar.gz: 99c35a1b67a403f17ee15eb4f576dcc6e30f8930
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a5a4dcd286f353895888195d80e1a2c59a9142dc6a81e6b891d07cab307880e567a787892aa902a0bae7c549409663d9c56bfeb85ffffcc30e3e256a141356c7
|
7
|
+
data.tar.gz: 3fe0b5c64ff492697c149a13c68aea5fe0cad985d0e78c898047b2b6b876fb6fe559e3741114012aba377f66fab9dc993acf85570b0dbb7862c707c23c13ed6f
|
data/README.md
CHANGED
@@ -22,15 +22,25 @@ Open [dashboard example file](/examples/sidekiq.json), then open `https://<your
|
|
22
22
|
|-------------------------------------------|---------|-------------------------|
|
23
23
|
| sidekiq_processed_jobs_total | counter | The total number of processed jobs
|
24
24
|
| sidekiq_failed_jobs_total | counter | The total number of failed jobs
|
25
|
+
| sidekiq_workers | gauge | The number of workers across all the processes
|
26
|
+
| sidekiq_processes | gauge | The number of processes
|
25
27
|
| sidekiq_busy_workers | gauge | The number of workers performing the job
|
26
28
|
| sidekiq_enqueued_jobs | gauge | The number of enqueued jobs
|
27
29
|
| sidekiq_scheduled_jobs | gauge | The number of jobs scheduled for a future execution
|
28
30
|
| sidekiq_retry_jobs | gauge | The number of jobs scheduled for the next try
|
29
31
|
| sidekiq_dead_jobs | gauge | The number of jobs being dead
|
30
|
-
| sidekiq_queue_latency_seconds | gauge | The
|
31
|
-
| sidekiq_queue_max_processing_time_seconds | gauge | The
|
32
|
+
| sidekiq_queue_latency_seconds | gauge | The number of seconds between oldest job being pushed to the queue and current time (labels: `name`)
|
33
|
+
| sidekiq_queue_max_processing_time_seconds | gauge | The number of seconds between oldest job of the queue being executed and current time (labels: `name`)
|
32
34
|
| sidekiq_queue_enqueued_jobs | gauge | The number of enqueued jobs in the queue (labels: `name`)
|
33
35
|
|
36
|
+
### [Scheduler](https://github.com/moove-it/sidekiq-scheduler)
|
37
|
+
|
38
|
+
| Name | Type | Description |
|
39
|
+
|-----------------------------------------------|-------|-----------------------|
|
40
|
+
| sidekiq_scheduler_jobs | gauge | The number of recurring jobs
|
41
|
+
| sidekiq_scheduler_enabled_jobs | gauge | The number of enabled recurring jobs
|
42
|
+
| sidekiq_scheduler_time_since_last_run_minutes | gauge | The number of minutes since the last recurring job was executed and current time (labels: `name`)
|
43
|
+
|
34
44
|
### [Cron](https://github.com/ondrejbartas/sidekiq-cron)
|
35
45
|
|
36
46
|
| Name | Type | Description |
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'erb'
|
4
|
+
require 'time'
|
5
|
+
|
6
|
+
# Exporter for the https://github.com/moove-it/sidekiq-scheduler
|
7
|
+
module Sidekiq
|
8
|
+
module Prometheus
|
9
|
+
module Exporter
|
10
|
+
class Scheduler
|
11
|
+
TEMPLATE = ERB.new(File.read(File.expand_path('templates/scheduler.erb', __dir__)))
|
12
|
+
SECONDS_IN_MINUTE = 60
|
13
|
+
Stats = Struct.new(:jobs_count, :enabled_jobs_count, :last_runs)
|
14
|
+
|
15
|
+
def self.available?
|
16
|
+
defined?(Sidekiq::Scheduler)
|
17
|
+
end
|
18
|
+
|
19
|
+
def initialize
|
20
|
+
@stats = Stats.new(recurring_jobs.count, enabled_recurring_jobs.count, last_runs)
|
21
|
+
end
|
22
|
+
|
23
|
+
def to_s
|
24
|
+
TEMPLATE.result(binding).chomp!
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def last_runs
|
30
|
+
enabled_recurring_jobs.each_with_object({}) do |name, memo|
|
31
|
+
execution_time = SidekiqScheduler::RedisManager.get_job_last_time(name)
|
32
|
+
next unless execution_time
|
33
|
+
|
34
|
+
memo[name] = (Time.now.to_i - Time.parse(execution_time).to_i) / SECONDS_IN_MINUTE
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def enabled_recurring_jobs
|
39
|
+
recurring_jobs.select { |name| Sidekiq::Scheduler.job_enabled?(name) }
|
40
|
+
end
|
41
|
+
|
42
|
+
def recurring_jobs
|
43
|
+
@recurring_jobs ||= (Sidekiq.schedule! || {}).keys.sort
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# HELP sidekiq_scheduler_jobs The number of recurring jobs.
|
2
|
+
# TYPE sidekiq_scheduler_jobs gauge
|
3
|
+
sidekiq_scheduler_jobs <%= format('%d', @stats.jobs_count) %>
|
4
|
+
|
5
|
+
# HELP sidekiq_scheduler_enabled_jobs The number of enabled recurring jobs.
|
6
|
+
# TYPE sidekiq_scheduler_enabled_jobs gauge
|
7
|
+
sidekiq_scheduler_enabled_jobs <%= format('%d', @stats.enabled_jobs_count) %>
|
8
|
+
|
9
|
+
# HELP sidekiq_scheduler_time_since_last_run_minutes The number of minutes since the last recurring job was executed and current time.
|
10
|
+
# TYPE sidekiq_scheduler_time_since_last_run_minutes gauge
|
11
|
+
<% @stats.last_runs.each do |job, last_run_minutes| %>sidekiq_scheduler_time_since_last_run_minutes{name="<%= job %>"} <%= format('%i', last_run_minutes) %>
|
12
|
+
<% end %>
|
@@ -6,11 +6,11 @@ sidekiq_processed_jobs_total <%= format('%d', @overview_stats.processed) %>
|
|
6
6
|
# TYPE sidekiq_failed_jobs_total counter
|
7
7
|
sidekiq_failed_jobs_total <%= format('%d', @overview_stats.failed) %>
|
8
8
|
|
9
|
-
# HELP sidekiq_workers The
|
9
|
+
# HELP sidekiq_workers The number of workers across all the processes.
|
10
10
|
# TYPE sidekiq_workers gauge
|
11
11
|
sidekiq_workers <%= format('%d', @total_workers) %>
|
12
12
|
|
13
|
-
# HELP sidekiq_processes The
|
13
|
+
# HELP sidekiq_processes The number of processes.
|
14
14
|
# TYPE sidekiq_processes gauge
|
15
15
|
sidekiq_processes <%= format('%d', @overview_stats.processes_size) %>
|
16
16
|
|
@@ -18,7 +18,7 @@ sidekiq_processes <%= format('%d', @overview_stats.processes_size) %>
|
|
18
18
|
# TYPE sidekiq_busy_workers gauge
|
19
19
|
sidekiq_busy_workers <%= format('%d', @overview_stats.workers_size) %>
|
20
20
|
|
21
|
-
# HELP sidekiq_enqueued_jobs The
|
21
|
+
# HELP sidekiq_enqueued_jobs The number of enqueued jobs.
|
22
22
|
# TYPE sidekiq_enqueued_jobs gauge
|
23
23
|
sidekiq_enqueued_jobs <%= format('%d', @overview_stats.enqueued) %>
|
24
24
|
|
@@ -34,7 +34,7 @@ sidekiq_retry_jobs <%= format('%d', @overview_stats.retry_size) %>
|
|
34
34
|
# TYPE sidekiq_dead_jobs gauge
|
35
35
|
sidekiq_dead_jobs <%= format('%d', @overview_stats.dead_size) %>
|
36
36
|
|
37
|
-
# HELP sidekiq_queue_latency_seconds The
|
37
|
+
# HELP sidekiq_queue_latency_seconds The number of seconds between oldest job being pushed to the queue and current time.
|
38
38
|
# TYPE sidekiq_queue_latency_seconds gauge
|
39
39
|
<% @queues_stats.each do |queue| %>sidekiq_queue_latency_seconds{name="<%= queue.name %>"} <%= format('%.3f', queue.latency) %>
|
40
40
|
<% end %>
|
@@ -42,7 +42,7 @@ sidekiq_dead_jobs <%= format('%d', @overview_stats.dead_size) %>
|
|
42
42
|
# TYPE sidekiq_queue_enqueued_jobs gauge
|
43
43
|
<% @queues_stats.each do |queue| %>sidekiq_queue_enqueued_jobs{name="<%= queue.name %>"} <%= format('%d', queue.size) %>
|
44
44
|
<% end %>
|
45
|
-
# HELP sidekiq_queue_max_processing_time_seconds The
|
45
|
+
# HELP sidekiq_queue_max_processing_time_seconds The number of seconds between oldest job of the queue being executed and current time.
|
46
46
|
# TYPE sidekiq_queue_max_processing_time_seconds gauge
|
47
47
|
<% @max_processing_times.each do |queue, max_processing_time| %>sidekiq_queue_max_processing_time_seconds{name="<%= queue %>"} <%= format('%i', max_processing_time) %>
|
48
48
|
<% end %>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-prometheus-exporter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergey Fedorov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04-
|
11
|
+
date: 2019-04-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sidekiq
|
@@ -203,8 +203,10 @@ files:
|
|
203
203
|
- lib/sidekiq/prometheus/exporter.rb
|
204
204
|
- lib/sidekiq/prometheus/exporter/cron.rb
|
205
205
|
- lib/sidekiq/prometheus/exporter/exporters.rb
|
206
|
+
- lib/sidekiq/prometheus/exporter/scheduler.rb
|
206
207
|
- lib/sidekiq/prometheus/exporter/standard.rb
|
207
208
|
- lib/sidekiq/prometheus/exporter/templates/cron.erb
|
209
|
+
- lib/sidekiq/prometheus/exporter/templates/scheduler.erb
|
208
210
|
- lib/sidekiq/prometheus/exporter/templates/standard.erb
|
209
211
|
- lib/sidekiq/prometheus/exporter/version.rb
|
210
212
|
- sidekiq-prometheus-exporter.gemspec
|