sidekiq-prometheus-exporter 0.1.9 → 0.1.14
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 +5 -5
- data/.github/FUNDING.yml +12 -0
- data/.gitignore +3 -1
- data/.rubocop.yml +28 -28
- data/.travis.yml +76 -14
- data/Appraisals +17 -4
- data/README.md +121 -28
- data/Rakefile +73 -0
- data/docker/Dockerfile +24 -0
- data/docker/README.md +55 -0
- data/docker/config.ru +38 -0
- data/examples/docker-compose.yml +2 -2
- data/examples/screenshot.png +0 -0
- data/examples/{sidekiq.json → sidekiq-dashboard.grafana-6.json} +10 -52
- data/examples/sidekiq-dashboard.grafana-7.json +845 -0
- data/gemfiles/sidekiq_3.3.1.gemfile +2 -1
- data/gemfiles/sidekiq_3.3.1.gemfile.lock +49 -48
- data/gemfiles/sidekiq_3.x.gemfile +2 -1
- data/gemfiles/sidekiq_3.x.gemfile.lock +47 -46
- data/gemfiles/sidekiq_4.x.gemfile +1 -1
- data/gemfiles/sidekiq_4.x.gemfile.lock +38 -38
- data/gemfiles/sidekiq_5.x.gemfile +1 -1
- data/gemfiles/sidekiq_5.x.gemfile.lock +40 -39
- data/gemfiles/sidekiq_6.x.gemfile +8 -0
- data/gemfiles/sidekiq_6.x.gemfile.lock +100 -0
- data/gemfiles/sidekiq_head.gemfile +9 -0
- data/gemfiles/sidekiq_head.gemfile.lock +116 -0
- data/helm/sidekiq-prometheus-exporter/.helmignore +22 -0
- data/helm/sidekiq-prometheus-exporter/Chart.yaml +6 -0
- data/helm/sidekiq-prometheus-exporter/README.md +87 -0
- data/helm/sidekiq-prometheus-exporter/templates/NOTES.txt +15 -0
- data/helm/sidekiq-prometheus-exporter/templates/_helpers.tpl +109 -0
- data/helm/sidekiq-prometheus-exporter/templates/clusterrole.yaml +20 -0
- data/helm/sidekiq-prometheus-exporter/templates/clusterrolebinding.yaml +17 -0
- data/helm/sidekiq-prometheus-exporter/templates/deployment.yaml +62 -0
- data/helm/sidekiq-prometheus-exporter/templates/service.yaml +17 -0
- data/helm/sidekiq-prometheus-exporter/templates/serviceaccount.yaml +9 -0
- data/helm/sidekiq-prometheus-exporter/templates/servicemonitor.yaml +26 -0
- data/helm/sidekiq-prometheus-exporter/values.yaml +133 -0
- data/lib/sidekiq/prometheus/exporter.rb +12 -1
- data/lib/sidekiq/prometheus/exporter/exporters.rb +5 -1
- data/lib/sidekiq/prometheus/exporter/scheduler.rb +48 -0
- data/lib/sidekiq/prometheus/exporter/standard.rb +1 -1
- 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
- data/sidekiq-prometheus-exporter.gemspec +4 -4
- metadata +38 -16
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'sidekiq/prometheus/exporter/standard'
|
4
4
|
require 'sidekiq/prometheus/exporter/cron'
|
5
|
+
require 'sidekiq/prometheus/exporter/scheduler'
|
5
6
|
|
6
7
|
module Sidekiq
|
7
8
|
module Prometheus
|
@@ -9,9 +10,12 @@ module Sidekiq
|
|
9
10
|
class Exporters
|
10
11
|
AVAILABLE_EXPORTERS = {
|
11
12
|
standard: Sidekiq::Prometheus::Exporter::Standard,
|
12
|
-
cron: Sidekiq::Prometheus::Exporter::Cron
|
13
|
+
cron: Sidekiq::Prometheus::Exporter::Cron,
|
14
|
+
scheduler: Sidekiq::Prometheus::Exporter::Scheduler
|
13
15
|
}.freeze
|
14
16
|
|
17
|
+
attr_reader :enabled
|
18
|
+
|
15
19
|
def initialize
|
16
20
|
@enabled = AVAILABLE_EXPORTERS.values.select(&:available?)
|
17
21
|
end
|
@@ -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 %>
|
@@ -31,11 +31,11 @@ Gem::Specification.new do |spec|
|
|
31
31
|
spec.add_dependency 'sidekiq', '>= 3.3.1'
|
32
32
|
|
33
33
|
spec.add_development_dependency 'appraisal', '~> 2.2'
|
34
|
-
spec.add_development_dependency 'bundler', '~> 1
|
34
|
+
spec.add_development_dependency 'bundler', '~> 2.1'
|
35
35
|
spec.add_development_dependency 'codeclimate-test-reporter', '~> 1.0'
|
36
|
-
spec.add_development_dependency 'pry-byebug', '~> 3.6'
|
37
|
-
spec.add_development_dependency 'rack-test', '~>
|
38
|
-
spec.add_development_dependency 'rake', '~>
|
36
|
+
spec.add_development_dependency 'pry-byebug', '~> 3.6.0'
|
37
|
+
spec.add_development_dependency 'rack-test', '~> 1.1'
|
38
|
+
spec.add_development_dependency 'rake', '~> 13.0'
|
39
39
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
40
40
|
spec.add_development_dependency 'rubocop', '~> 0.58'
|
41
41
|
spec.add_development_dependency 'rubocop-rspec', '~> 1.28.0'
|
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.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergey Fedorov
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sidekiq
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '1
|
47
|
+
version: '2.1'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '1
|
54
|
+
version: '2.1'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: codeclimate-test-reporter
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,42 +72,42 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 3.6.0
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 3.6.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: rack-test
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '1.1'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '1.1'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rake
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
103
|
+
version: '13.0'
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
110
|
+
version: '13.0'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: rspec
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -172,6 +172,7 @@ extensions: []
|
|
172
172
|
extra_rdoc_files: []
|
173
173
|
files:
|
174
174
|
- ".codeclimate.yml"
|
175
|
+
- ".github/FUNDING.yml"
|
175
176
|
- ".gitignore"
|
176
177
|
- ".rspec"
|
177
178
|
- ".rubocop.yml"
|
@@ -183,12 +184,16 @@ files:
|
|
183
184
|
- Rakefile
|
184
185
|
- bin/console
|
185
186
|
- bin/setup
|
187
|
+
- docker/Dockerfile
|
188
|
+
- docker/README.md
|
189
|
+
- docker/config.ru
|
186
190
|
- examples/docker-compose.yml
|
187
191
|
- examples/metrics/Dockerfile
|
188
192
|
- examples/metrics/config.ru
|
189
193
|
- examples/prometheus/prometheus.yml
|
190
194
|
- examples/screenshot.png
|
191
|
-
- examples/sidekiq.json
|
195
|
+
- examples/sidekiq-dashboard.grafana-6.json
|
196
|
+
- examples/sidekiq-dashboard.grafana-7.json
|
192
197
|
- examples/sidekiq/Dockerfile
|
193
198
|
- examples/sidekiq/sidekiq.rb
|
194
199
|
- examples/sidekiq/sidekiq.yml
|
@@ -200,11 +205,29 @@ files:
|
|
200
205
|
- gemfiles/sidekiq_4.x.gemfile.lock
|
201
206
|
- gemfiles/sidekiq_5.x.gemfile
|
202
207
|
- gemfiles/sidekiq_5.x.gemfile.lock
|
208
|
+
- gemfiles/sidekiq_6.x.gemfile
|
209
|
+
- gemfiles/sidekiq_6.x.gemfile.lock
|
210
|
+
- gemfiles/sidekiq_head.gemfile
|
211
|
+
- gemfiles/sidekiq_head.gemfile.lock
|
212
|
+
- helm/sidekiq-prometheus-exporter/.helmignore
|
213
|
+
- helm/sidekiq-prometheus-exporter/Chart.yaml
|
214
|
+
- helm/sidekiq-prometheus-exporter/README.md
|
215
|
+
- helm/sidekiq-prometheus-exporter/templates/NOTES.txt
|
216
|
+
- helm/sidekiq-prometheus-exporter/templates/_helpers.tpl
|
217
|
+
- helm/sidekiq-prometheus-exporter/templates/clusterrole.yaml
|
218
|
+
- helm/sidekiq-prometheus-exporter/templates/clusterrolebinding.yaml
|
219
|
+
- helm/sidekiq-prometheus-exporter/templates/deployment.yaml
|
220
|
+
- helm/sidekiq-prometheus-exporter/templates/service.yaml
|
221
|
+
- helm/sidekiq-prometheus-exporter/templates/serviceaccount.yaml
|
222
|
+
- helm/sidekiq-prometheus-exporter/templates/servicemonitor.yaml
|
223
|
+
- helm/sidekiq-prometheus-exporter/values.yaml
|
203
224
|
- lib/sidekiq/prometheus/exporter.rb
|
204
225
|
- lib/sidekiq/prometheus/exporter/cron.rb
|
205
226
|
- lib/sidekiq/prometheus/exporter/exporters.rb
|
227
|
+
- lib/sidekiq/prometheus/exporter/scheduler.rb
|
206
228
|
- lib/sidekiq/prometheus/exporter/standard.rb
|
207
229
|
- lib/sidekiq/prometheus/exporter/templates/cron.erb
|
230
|
+
- lib/sidekiq/prometheus/exporter/templates/scheduler.erb
|
208
231
|
- lib/sidekiq/prometheus/exporter/templates/standard.erb
|
209
232
|
- lib/sidekiq/prometheus/exporter/version.rb
|
210
233
|
- sidekiq-prometheus-exporter.gemspec
|
@@ -212,7 +235,7 @@ homepage: https://github.com/Strech/sidekiq-prometheus-exporter
|
|
212
235
|
licenses: []
|
213
236
|
metadata:
|
214
237
|
allowed_push_host: https://rubygems.org
|
215
|
-
post_install_message:
|
238
|
+
post_install_message:
|
216
239
|
rdoc_options: []
|
217
240
|
require_paths:
|
218
241
|
- lib
|
@@ -227,9 +250,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
227
250
|
- !ruby/object:Gem::Version
|
228
251
|
version: '0'
|
229
252
|
requirements: []
|
230
|
-
|
231
|
-
|
232
|
-
signing_key:
|
253
|
+
rubygems_version: 3.0.3
|
254
|
+
signing_key:
|
233
255
|
specification_version: 4
|
234
256
|
summary: Prometheus exporter for the Sidekiq
|
235
257
|
test_files: []
|