sidekiq_prometheus 1.8.2 → 1.8.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cfef2dcf926147bf8113fc2ef76ebc53e194b742bff8024e52915829ed315403
4
- data.tar.gz: d312f2be0b37be88b32e4031560c03ad1386283c935e911435ba8929c108dc2b
3
+ metadata.gz: c9a7474fb0e37d8c0aa3849bc4c5df6ff3b8a173a3545fcf5027dc29f8d1c4eb
4
+ data.tar.gz: 6cb664182b40af876f6e58c532c235d3169ca3cb154f9aa785faaec384c3e9db
5
5
  SHA512:
6
- metadata.gz: edc39e79efebc8d713ab0b4c60913b860c115fd99e6b8d096e705e41c698accb8e1765316e98371f67bd13c53e612254f656cf49713580b50675b15f8c9664f3
7
- data.tar.gz: d03bdf927308ed353d34922c894c0363e68e1326792d95dd7052f87c2a38d2156a6cfd13954b3ee593adbc9a7e80407a84569387ead503ea5adcb1f2baccf955
6
+ metadata.gz: 467ce07f7b4a5b79dcb16f61d8da97076c32ed5e5bb7b892d19a9a1d397214bb254188cacdb615fa3495d7485ddad38d38ea3e6078bae6ffaf4928a513a79deb
7
+ data.tar.gz: 3b47b8a80fa6569456b166374e9395db173c243e86fc63e36a25292f0d463c0a0501cd29374d51d490e5add972412b5901f77a077937436f5e1b7cfbb64a83b2
data/.travis.yml CHANGED
@@ -1,8 +1,7 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
+ - 3.1
4
5
  - 3.0
5
6
  - 2.7
6
- - 2.6
7
- - 2.5
8
7
  before_install: gem install bundler -v 2.2.15
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  CHANGELOG
2
2
 
3
+ <a name="v1.8.2"></a>
4
+ ## [v1.8.2](https://github.com/fastly/sidekiq-prometheus/compare/v1.8.1...v1.8.2) (2022-11-29)
5
+
6
+ ## What's Changed
7
+ * Allow sidekiq-prometheus to work with prometheus-client version > 2 by @hieuk09 in https://github.com/fastly/sidekiq-prometheus/pull/29
8
+ * Fixes Newer Sidekiq-Enterprise versions that have a Senate.leader? issue with Sidekiq Prometheus 1.8.1 by @imightbeinatree in https://github.com/fastly/sidekiq-prometheus/pull/32
9
+
10
+ ## New Contributors
11
+ * @hieuk09 made their first contribution in https://github.com/fastly/sidekiq-prometheus/pull/29
12
+
13
+ **Full Changelog**: https://github.com/fastly/sidekiq-prometheus/compare/v1.8.1...v1.8.2
14
+
3
15
  <a name="v1.8.1"></a>
4
16
  ## [v1.8.1](https://github.com/fastly/sidekiq-prometheus/compare/v1.8.0...v1.8.1) (2022-10-18)
5
17
 
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source 'https://rubygems.org'
3
+ source "https://rubygems.org"
4
4
 
5
5
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
6
 
data/Rakefile CHANGED
@@ -1,19 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'bundler/gem_tasks'
4
- require 'rspec/core/rake_task'
3
+ require "bundler/gem_tasks"
4
+ require "rspec/core/rake_task"
5
+ require "standard/rake"
5
6
 
6
7
  RSpec::Core::RakeTask.new(:spec)
7
8
 
8
- begin
9
- require 'rubocop/rake_task'
10
- RuboCop::RakeTask.new(:rubocop) do |task|
11
- task.options = ['-c.rubocop.yml']
12
- end
13
- rescue LoadError
14
- end
15
-
16
9
  task default: %w[
17
- rubocop
10
+ standard
18
11
  spec
19
12
  ]
@@ -7,8 +7,8 @@ class SidekiqPrometheus::JobMetrics
7
7
  # If we're using a wrapper class, like ActiveJob, use the "wrapped"
8
8
  # attribute to expose the underlying thing.
9
9
  labels = {
10
- class: job['wrapped'] || worker.class.to_s,
11
- queue: queue,
10
+ class: job["wrapped"] || worker.class.to_s,
11
+ queue: queue
12
12
  }
13
13
 
14
14
  begin
@@ -29,11 +29,11 @@ class SidekiqPrometheus::JobMetrics
29
29
  end
30
30
 
31
31
  result
32
- rescue StandardError => e
33
- if e.class.to_s == 'Sidekiq::Limiter::OverLimit'
32
+ rescue => e
33
+ if e.class.to_s == "Sidekiq::Limiter::OverLimit"
34
34
  registry[:sidekiq_job_over_limit].increment(labels: labels)
35
35
  else
36
- err_label = { :error_class => e.class.to_s }
36
+ err_label = {error_class: e.class.to_s}
37
37
  registry[:sidekiq_job_failed].increment(labels: err_label.merge(labels))
38
38
  end
39
39
 
@@ -3,106 +3,106 @@
3
3
  module SidekiqPrometheus::Metrics
4
4
  module_function
5
5
 
6
- UNKNOWN = 'unknown'
6
+ UNKNOWN = "unknown"
7
7
 
8
8
  VALID_TYPES = %i[counter gauge histogram summary].freeze
9
9
  JOB_LABELS = %i[class queue].freeze
10
10
  SIDEKIQ_GLOBAL_METRICS = [
11
- { name: :sidekiq_workers_size,
12
- type: :gauge,
13
- docstring: 'Total number of workers processing jobs', },
14
- { name: :sidekiq_processes_size,
15
- type: :gauge,
16
- docstring: 'Total number of running sidekiq processes', },
17
- { name: :sidekiq_dead_size,
18
- type: :gauge,
19
- docstring: 'Total Dead Size', },
20
- { name: :sidekiq_enqueued,
21
- type: :gauge,
22
- docstring: 'Total Size of all known queues',
23
- labels: %i[queue], },
24
- { name: :sidekiq_queue_latency,
25
- type: :summary,
26
- docstring: 'Latency (in seconds) of all queues',
27
- labels: %i[queue], },
28
- { name: :sidekiq_failed,
29
- type: :gauge,
30
- docstring: 'Number of job executions which raised an error', },
31
- { name: :sidekiq_processed,
32
- type: :gauge,
33
- docstring: 'Number of job executions completed (success or failure)', },
34
- { name: :sidekiq_retry_size,
35
- type: :gauge,
36
- docstring: 'Total Retries Size', },
37
- { name: :sidekiq_scheduled_size,
38
- type: :gauge,
39
- docstring: 'Total Scheduled Size', },
40
- { name: :sidekiq_redis_connected_clients,
41
- type: :gauge,
42
- docstring: 'Number of clients connected to Redis instance for Sidekiq', },
43
- { name: :sidekiq_redis_used_memory,
44
- type: :gauge,
45
- docstring: 'Used memory from Redis.info', },
46
- { name: :sidekiq_redis_used_memory_peak,
47
- type: :gauge,
48
- docstring: 'Used memory peak from Redis.info', },
49
- { name: :sidekiq_redis_keys,
50
- type: :gauge,
51
- docstring: 'Number of redis keys',
52
- labels: %i[database], },
53
- { name: :sidekiq_redis_expires,
54
- type: :gauge,
55
- docstring: 'Number of redis keys with expiry set',
56
- labels: %i[database], },
11
+ {name: :sidekiq_workers_size,
12
+ type: :gauge,
13
+ docstring: "Total number of workers processing jobs"},
14
+ {name: :sidekiq_processes_size,
15
+ type: :gauge,
16
+ docstring: "Total number of running sidekiq processes"},
17
+ {name: :sidekiq_dead_size,
18
+ type: :gauge,
19
+ docstring: "Total Dead Size"},
20
+ {name: :sidekiq_enqueued,
21
+ type: :gauge,
22
+ docstring: "Total Size of all known queues",
23
+ labels: %i[queue]},
24
+ {name: :sidekiq_queue_latency,
25
+ type: :summary,
26
+ docstring: "Latency (in seconds) of all queues",
27
+ labels: %i[queue]},
28
+ {name: :sidekiq_failed,
29
+ type: :gauge,
30
+ docstring: "Number of job executions which raised an error"},
31
+ {name: :sidekiq_processed,
32
+ type: :gauge,
33
+ docstring: "Number of job executions completed (success or failure)"},
34
+ {name: :sidekiq_retry_size,
35
+ type: :gauge,
36
+ docstring: "Total Retries Size"},
37
+ {name: :sidekiq_scheduled_size,
38
+ type: :gauge,
39
+ docstring: "Total Scheduled Size"},
40
+ {name: :sidekiq_redis_connected_clients,
41
+ type: :gauge,
42
+ docstring: "Number of clients connected to Redis instance for Sidekiq"},
43
+ {name: :sidekiq_redis_used_memory,
44
+ type: :gauge,
45
+ docstring: "Used memory from Redis.info"},
46
+ {name: :sidekiq_redis_used_memory_peak,
47
+ type: :gauge,
48
+ docstring: "Used memory peak from Redis.info"},
49
+ {name: :sidekiq_redis_keys,
50
+ type: :gauge,
51
+ docstring: "Number of redis keys",
52
+ labels: %i[database]},
53
+ {name: :sidekiq_redis_expires,
54
+ type: :gauge,
55
+ docstring: "Number of redis keys with expiry set",
56
+ labels: %i[database]}
57
57
  ].freeze
58
58
  SIDEKIQ_JOB_METRICS = [
59
- { name: :sidekiq_job_count,
60
- type: :counter,
61
- docstring: 'Count of Sidekiq jobs',
62
- labels: JOB_LABELS, },
63
- { name: :sidekiq_job_duration,
64
- type: :histogram,
65
- docstring: 'Sidekiq job processing duration',
66
- labels: JOB_LABELS, },
67
- { name: :sidekiq_job_failed,
68
- type: :counter,
69
- docstring: 'Count of failed Sidekiq jobs',
70
- labels: JOB_LABELS + [:error_class], },
71
- { name: :sidekiq_job_success,
72
- type: :counter,
73
- docstring: 'Count of successful Sidekiq jobs',
74
- labels: JOB_LABELS, },
75
- { name: :sidekiq_job_over_limit,
76
- type: :counter,
77
- docstring: 'Count of over limit Sidekiq jobs',
78
- labels: JOB_LABELS, },
59
+ {name: :sidekiq_job_count,
60
+ type: :counter,
61
+ docstring: "Count of Sidekiq jobs",
62
+ labels: JOB_LABELS},
63
+ {name: :sidekiq_job_duration,
64
+ type: :histogram,
65
+ docstring: "Sidekiq job processing duration",
66
+ labels: JOB_LABELS},
67
+ {name: :sidekiq_job_failed,
68
+ type: :counter,
69
+ docstring: "Count of failed Sidekiq jobs",
70
+ labels: JOB_LABELS + [:error_class]},
71
+ {name: :sidekiq_job_success,
72
+ type: :counter,
73
+ docstring: "Count of successful Sidekiq jobs",
74
+ labels: JOB_LABELS},
75
+ {name: :sidekiq_job_over_limit,
76
+ type: :counter,
77
+ docstring: "Count of over limit Sidekiq jobs",
78
+ labels: JOB_LABELS}
79
79
  ].freeze
80
80
  SIDEKIQ_GC_METRIC = {
81
- name: :sidekiq_job_allocated_objects,
82
- type: :histogram,
83
- docstring: 'Count of ruby objects allocated by a Sidekiq job',
84
- buckets: [10, 50, 100, 500, 1_000, 2_500, 5_000, 10_000, 50_000, 100_000, 500_000, 1_000_000, 5_000_000, 10_000_000, 25_000_000],
85
- labels: JOB_LABELS,
81
+ name: :sidekiq_job_allocated_objects,
82
+ type: :histogram,
83
+ docstring: "Count of ruby objects allocated by a Sidekiq job",
84
+ buckets: [10, 50, 100, 500, 1_000, 2_500, 5_000, 10_000, 50_000, 100_000, 500_000, 1_000_000, 5_000_000, 10_000_000, 25_000_000],
85
+ labels: JOB_LABELS
86
86
  }.freeze
87
87
  SIDEKIQ_WORKER_GC_METRICS = [
88
- { name: :sidekiq_allocated_objects,
89
- type: :counter,
90
- docstring: 'Count of ruby objects allocated by a Sidekiq worker', },
91
- { name: :sidekiq_heap_free_slots,
92
- type: :gauge,
93
- docstring: 'Sidekiq worker GC.stat[:heap_free_slots]', },
94
- { name: :sidekiq_heap_live_slots,
95
- type: :gauge,
96
- docstring: 'Sidekiq worker GC.stat[:heap_live_slots]', },
97
- { name: :sidekiq_major_gc_count,
98
- type: :counter,
99
- docstring: 'Sidekiq worker GC.stat[:major_gc_count]', },
100
- { name: :sidekiq_minor_gc_count,
101
- type: :counter,
102
- docstring: 'Sidekiq worker GC.stat[:minor_gc_count]', },
103
- { name: :sidekiq_rss,
104
- type: :gauge,
105
- docstring: 'Sidekiq process RSS', },
88
+ {name: :sidekiq_allocated_objects,
89
+ type: :counter,
90
+ docstring: "Count of ruby objects allocated by a Sidekiq worker"},
91
+ {name: :sidekiq_heap_free_slots,
92
+ type: :gauge,
93
+ docstring: "Sidekiq worker GC.stat[:heap_free_slots]"},
94
+ {name: :sidekiq_heap_live_slots,
95
+ type: :gauge,
96
+ docstring: "Sidekiq worker GC.stat[:heap_live_slots]"},
97
+ {name: :sidekiq_major_gc_count,
98
+ type: :counter,
99
+ docstring: "Sidekiq worker GC.stat[:major_gc_count]"},
100
+ {name: :sidekiq_minor_gc_count,
101
+ type: :counter,
102
+ docstring: "Sidekiq worker GC.stat[:minor_gc_count]"},
103
+ {name: :sidekiq_rss,
104
+ type: :gauge,
105
+ docstring: "Sidekiq process RSS"}
106
106
  ].freeze
107
107
 
108
108
  def registry
@@ -131,6 +131,16 @@ module SidekiqPrometheus::Metrics
131
131
  end
132
132
  end
133
133
 
134
+ def unregister_sidekiq_global_metrics
135
+ unregister_metrics SIDEKIQ_GLOBAL_METRICS
136
+ end
137
+
138
+ def unregister_metrics(metrics)
139
+ metrics.each do |metric|
140
+ unregister(name: metric[:name])
141
+ end
142
+ end
143
+
134
144
  ##
135
145
  # Fetch a metric from the registry
136
146
  # @param name [Symbol] name of metric to fetch
@@ -139,7 +149,7 @@ module SidekiqPrometheus::Metrics
139
149
  end
140
150
 
141
151
  class << self
142
- alias get []
152
+ alias_method :get, :[]
143
153
  end
144
154
 
145
155
  ##
@@ -160,9 +170,9 @@ module SidekiqPrometheus::Metrics
160
170
  # Aggregate all labels
161
171
  all_labels = labels | SidekiqPrometheus.custom_labels.fetch(name, []) | all_preset_labels.keys
162
172
 
163
- options = { docstring: docstring,
164
- labels: all_labels,
165
- preset_labels: all_preset_labels, }
173
+ options = {docstring: docstring,
174
+ labels: all_labels,
175
+ preset_labels: all_preset_labels}
166
176
 
167
177
  options[:buckets] = buckets if buckets
168
178
 
@@ -11,7 +11,7 @@
11
11
  # @see https://github.com/mperham/sidekiq/blob/main/lib/sidekiq/api.rb
12
12
 
13
13
  begin
14
- require 'sidekiq/component'
14
+ require "sidekiq/component"
15
15
  rescue LoadError
16
16
  end
17
17
 
@@ -21,6 +21,9 @@ class SidekiqPrometheus::PeriodicMetrics
21
21
  # @return [Boolean] When +true+ will stop the reporting loop.
22
22
  attr_accessor :done
23
23
 
24
+ # @return [Boolean] Indicates if this instance is currently the leader.
25
+ attr_accessor :leader
26
+
24
27
  # @return [Integer] Interval in seconds to record metrics. Default: [SidekiqPrometheus.periodic_reporting_interval]
25
28
  attr_reader :interval
26
29
  attr_reader :senate, :sidekiq_stats, :sidekiq_queue
@@ -28,7 +31,7 @@ class SidekiqPrometheus::PeriodicMetrics
28
31
  GLOBAL_STATS = %i[failed processed retry_size dead_size scheduled_size workers_size processes_size].freeze
29
32
  GC_STATS = {
30
33
  counters: %i[major_gc_count minor_gc_count total_allocated_objects],
31
- gauges: %i[heap_live_slots heap_free_slots],
34
+ gauges: %i[heap_live_slots heap_free_slots]
32
35
  }.freeze
33
36
  REDIS_STATS = %w[connected_clients used_memory used_memory_peak].freeze
34
37
 
@@ -50,24 +53,25 @@ class SidekiqPrometheus::PeriodicMetrics
50
53
  @sidekiq_stats = sidekiq_stats
51
54
  @sidekiq_queue = sidekiq_queue
52
55
  @senate = if senate.nil?
53
- if Object.const_defined?('Sidekiq::Senate')
54
- if respond_to?(:leader?)
55
- self
56
- else
57
- Sidekiq::Senate
58
- end
59
- else
60
- Senate
61
- end
62
- else
63
- senate
64
- end
56
+ if Object.const_defined?("Sidekiq::Senate")
57
+ if respond_to?(:leader?)
58
+ self
59
+ else
60
+ Sidekiq::Senate
61
+ end
62
+ else
63
+ Senate
64
+ end
65
+ else
66
+ senate
67
+ end
68
+ @leader = false
65
69
  end
66
70
 
67
71
  ##
68
72
  # Start the period mettric reporter
69
73
  def start
70
- Sidekiq.logger.info('SidekiqPrometheus: Starting periodic metrics reporting')
74
+ Sidekiq.logger.info("SidekiqPrometheus: Starting periodic metrics reporting")
71
75
  @thread = Thread.new(&method(:run))
72
76
  end
73
77
 
@@ -100,8 +104,8 @@ class SidekiqPrometheus::PeriodicMetrics
100
104
  end
101
105
 
102
106
  sidekiq_queue.all.each do |queue|
103
- SidekiqPrometheus[:sidekiq_enqueued]&.set(queue.size, labels: { queue: queue.name })
104
- SidekiqPrometheus[:sidekiq_queue_latency]&.observe(queue.latency, labels: { queue: queue.name })
107
+ SidekiqPrometheus[:sidekiq_enqueued]&.set(queue.size, labels: {queue: queue.name})
108
+ SidekiqPrometheus[:sidekiq_queue_latency]&.observe(queue.latency, labels: {queue: queue.name})
105
109
  end
106
110
  end
107
111
 
@@ -122,7 +126,7 @@ class SidekiqPrometheus::PeriodicMetrics
122
126
 
123
127
  db_stats = redis_info.select { |k, _v| k.match(/^db/) }
124
128
  db_stats.each do |db, stat|
125
- label = { database: db }
129
+ label = {database: db}
126
130
  values = stat.scan(/\d+/)
127
131
  SidekiqPrometheus[:sidekiq_redis_keys]&.set(values[0].to_i, labels: label)
128
132
  SidekiqPrometheus[:sidekiq_redis_expires]&.set(values[1].to_i, labels: label)
@@ -134,8 +138,16 @@ class SidekiqPrometheus::PeriodicMetrics
134
138
  # @see https://github.com/discourse/prometheus_exporter/blob/v0.3.3/lib/prometheus_exporter/instrumentation/process.rb#L39-L42
135
139
  def rss
136
140
  pid = Process.pid
137
- @pagesize ||= `getconf PAGESIZE`.to_i rescue 4096
138
- File.read("/proc/#{pid}/statm").split(' ')[1].to_i * @pagesize rescue 0
141
+ @pagesize ||= begin
142
+ `getconf PAGESIZE`.to_i
143
+ rescue
144
+ 4096
145
+ end
146
+ begin
147
+ File.read("/proc/#{pid}/statm").split(" ")[1].to_i * @pagesize
148
+ rescue
149
+ 0
150
+ end
139
151
  end
140
152
 
141
153
  ##
@@ -144,10 +156,14 @@ class SidekiqPrometheus::PeriodicMetrics
144
156
  def run
145
157
  until done
146
158
  begin
147
- report_global_metrics if SidekiqPrometheus.global_metrics_enabled? && senate.leader?
148
- report_redis_metrics if SidekiqPrometheus.global_metrics_enabled? && senate.leader?
159
+ if SidekiqPrometheus.global_metrics_enabled?
160
+ handle_leader_state(senate.leader?)
161
+ report_global_metrics if leader
162
+ report_redis_metrics if leader
163
+ end
164
+
149
165
  report_gc_metrics if SidekiqPrometheus.gc_metrics_enabled?
150
- rescue StandardError => e
166
+ rescue => e
151
167
  Sidekiq.logger.error e
152
168
  ensure
153
169
  sleep interval
@@ -155,6 +171,22 @@ class SidekiqPrometheus::PeriodicMetrics
155
171
  end
156
172
  end
157
173
 
174
+ ##
175
+ # If this instance was promoted to the leader set the local state and register the metrics.
176
+ def handle_leader_state(senate_leader)
177
+ return if senate_leader == leader
178
+
179
+ if senate_leader && !leader
180
+ # This instance is now the leader
181
+ self.leader = true
182
+ SidekiqPrometheus::Metrics.register_sidekiq_global_metrics
183
+ else
184
+ # we've been demoted!
185
+ SidekiqPrometheus::Metrics.unregister_sidekiq_global_metrics
186
+ self.leader = false
187
+ end
188
+ end
189
+
158
190
  ##
159
191
  # Fake Senate class to guard against undefined constant errors.
160
192
  # @private
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SidekiqPrometheus
4
- VERSION = '1.8.2'
4
+ VERSION = "1.8.3"
5
5
  end
@@ -1,15 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'benchmark'
4
- require 'rack'
5
- require 'prometheus/client'
6
- require 'prometheus/middleware/exporter'
7
- require 'sidekiq'
8
- require 'sidekiq/api'
9
- require 'webrick'
3
+ require "benchmark"
4
+ require "rack"
5
+ require "prometheus/client"
6
+ require "prometheus/middleware/exporter"
7
+ require "sidekiq"
8
+ require "sidekiq/api"
9
+ require "webrick"
10
10
 
11
11
  begin
12
- require 'sidekiq/ent'
12
+ require "sidekiq/ent"
13
13
  rescue LoadError
14
14
  end
15
15
 
@@ -77,7 +77,7 @@ module SidekiqPrometheus
77
77
  self.global_metrics_enabled = true
78
78
  self.periodic_reporting_interval = 30
79
79
  self.metrics_server_enabled = true
80
- self.metrics_host = 'localhost'
80
+ self.metrics_host = "localhost"
81
81
  self.metrics_port = 9359
82
82
  self.metrics_server_logger_enabled = true
83
83
  self.custom_labels = {}
@@ -115,7 +115,7 @@ module SidekiqPrometheus
115
115
  # Requires +Sidekiq::Enterprise+ as it uses the leader election functionality
116
116
  # @return [Boolean] defaults to true if +Sidekiq::Enterprise+ is available
117
117
  def global_metrics_enabled?
118
- Object.const_defined?('Sidekiq::Enterprise') && global_metrics_enabled
118
+ Object.const_defined?("Sidekiq::Enterprise") && global_metrics_enabled
119
119
  end
120
120
 
121
121
  ##
@@ -149,8 +149,8 @@ module SidekiqPrometheus
149
149
  end
150
150
 
151
151
  class << self
152
- alias configure! configure
153
- alias get []
152
+ alias_method :configure!, :configure
153
+ alias_method :get, :[]
154
154
  end
155
155
 
156
156
  ##
@@ -166,7 +166,7 @@ module SidekiqPrometheus
166
166
  def register_custom_metrics
167
167
  return if custom_metrics.empty?
168
168
 
169
- raise SidekiqPrometheus::Error, 'custom_metrics is not an array.' unless custom_metrics.is_a?(Array)
169
+ raise SidekiqPrometheus::Error, "custom_metrics is not an array." unless custom_metrics.is_a?(Array)
170
170
 
171
171
  SidekiqPrometheus::Metrics.register_metrics(custom_metrics)
172
172
  end
@@ -178,7 +178,6 @@ module SidekiqPrometheus
178
178
  SidekiqPrometheus::Metrics.register_sidekiq_job_metrics
179
179
  SidekiqPrometheus::Metrics.register_sidekiq_gc_metric if gc_metrics_enabled?
180
180
  SidekiqPrometheus::Metrics.register_sidekiq_worker_gc_metrics if gc_metrics_enabled? && periodic_metrics_enabled?
181
- SidekiqPrometheus::Metrics.register_sidekiq_global_metrics if global_metrics_enabled? && periodic_metrics_enabled?
182
181
  register_custom_metrics
183
182
 
184
183
  sidekiq_setup
@@ -195,12 +194,12 @@ module SidekiqPrometheus
195
194
  end
196
195
 
197
196
  if periodic_metrics_enabled?
198
- config.on(:startup) { SidekiqPrometheus::PeriodicMetrics.reporter(config).start }
197
+ config.on(:startup) { SidekiqPrometheus::PeriodicMetrics.reporter(config).start }
199
198
  config.on(:shutdown) { SidekiqPrometheus::PeriodicMetrics.reporter(config).stop }
200
199
  end
201
200
 
202
201
  if metrics_server_enabled?
203
- config.on(:startup) { SidekiqPrometheus.metrics_server }
202
+ config.on(:startup) { SidekiqPrometheus.metrics_server }
204
203
  config.on(:shutdown) { SidekiqPrometheus.metrics_server.kill }
205
204
  end
206
205
  end
@@ -213,11 +212,11 @@ module SidekiqPrometheus
213
212
  def metrics_server
214
213
  opts = {
215
214
  Port: SidekiqPrometheus.metrics_port,
216
- Host: SidekiqPrometheus.metrics_host,
215
+ Host: SidekiqPrometheus.metrics_host
217
216
  }
218
217
 
219
218
  unless metrics_server_logger_enabled?
220
- opts[:Logger] = WEBrick::Log.new('/dev/null')
219
+ opts[:Logger] = WEBrick::Log.new("/dev/null")
221
220
  opts[:AccessLog] = []
222
221
  end
223
222
 
@@ -225,7 +224,7 @@ module SidekiqPrometheus
225
224
  Rack::Handler::WEBrick.run(
226
225
  Rack::Builder.new {
227
226
  use Prometheus::Middleware::Exporter, registry: SidekiqPrometheus.registry
228
- run ->(_) { [301, { 'Location' => '/metrics' }, []] }
227
+ run ->(_) { [301, {"Location" => "/metrics"}, []] }
229
228
  },
230
229
  **opts
231
230
  )
@@ -235,7 +234,7 @@ end
235
234
 
236
235
  class SidekiqPrometheus::Error < StandardError; end
237
236
 
238
- require 'sidekiq_prometheus/job_metrics'
239
- require 'sidekiq_prometheus/metrics'
240
- require 'sidekiq_prometheus/periodic_metrics'
241
- require 'sidekiq_prometheus/version'
237
+ require "sidekiq_prometheus/job_metrics"
238
+ require "sidekiq_prometheus/metrics"
239
+ require "sidekiq_prometheus/periodic_metrics"
240
+ require "sidekiq_prometheus/version"
@@ -1,34 +1,34 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('lib', __dir__)
3
+ lib = File.expand_path("lib", __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require 'sidekiq_prometheus/version'
5
+ require "sidekiq_prometheus/version"
6
6
 
7
7
  Gem::Specification.new do |spec|
8
- spec.name = 'sidekiq_prometheus'
9
- spec.version = SidekiqPrometheus::VERSION
10
- spec.authors = ['Lukas Eklund', 'NHM Tanveer Hossain Khan']
11
- spec.email = ['leklund@fastly.com']
8
+ spec.name = "sidekiq_prometheus"
9
+ spec.version = SidekiqPrometheus::VERSION
10
+ spec.authors = ["Lukas Eklund", "NHM Tanveer Hossain Khan"]
11
+ spec.email = ["leklund@fastly.com"]
12
12
 
13
- spec.summary = 'Prometheus Instrumentation for Sidekiq'
14
- spec.homepage = 'https://github.com/fastly/sidekiq-prometheus'
15
- spec.license = 'MIT'
13
+ spec.summary = "Prometheus Instrumentation for Sidekiq"
14
+ spec.homepage = "https://github.com/fastly/sidekiq-prometheus"
15
+ spec.license = "MIT"
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
18
  f.match(%r{^(test|spec|features)/})
19
19
  end
20
- spec.bindir = 'exe'
21
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
- spec.require_paths = ['lib']
20
+ spec.bindir = "exe"
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.require_paths = ["lib"]
23
23
 
24
- spec.add_development_dependency 'bundler'
25
- spec.add_development_dependency 'pry'
26
- spec.add_development_dependency 'rake', '~> 12.3.3'
27
- spec.add_development_dependency 'rspec', '~> 3.0'
28
- spec.add_development_dependency 'rubocop', '~> 0.58.0'
24
+ spec.add_development_dependency "bundler"
25
+ spec.add_development_dependency "pry"
26
+ spec.add_development_dependency "rake", "~> 12.3.3"
27
+ spec.add_development_dependency "rspec", "~> 3.0"
28
+ spec.add_development_dependency "standard"
29
29
 
30
- spec.add_runtime_dependency 'prometheus-client', '>= 2.0'
31
- spec.add_runtime_dependency 'rack'
32
- spec.add_runtime_dependency 'sidekiq', '> 5.1', '< 7.0'
33
- spec.add_runtime_dependency 'webrick'
30
+ spec.add_runtime_dependency "prometheus-client", ">= 2.0"
31
+ spec.add_runtime_dependency "rack"
32
+ spec.add_runtime_dependency "sidekiq", "> 5.1", "< 7.0"
33
+ spec.add_runtime_dependency "webrick"
34
34
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq_prometheus
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.2
4
+ version: 1.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lukas Eklund
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2022-11-29 00:00:00.000000000 Z
12
+ date: 2023-01-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -68,19 +68,19 @@ dependencies:
68
68
  - !ruby/object:Gem::Version
69
69
  version: '3.0'
70
70
  - !ruby/object:Gem::Dependency
71
- name: rubocop
71
+ name: standard
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - "~>"
74
+ - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: 0.58.0
76
+ version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - "~>"
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
- version: 0.58.0
83
+ version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: prometheus-client
86
86
  requirement: !ruby/object:Gem::Requirement
@@ -188,7 +188,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
188
  - !ruby/object:Gem::Version
189
189
  version: '0'
190
190
  requirements: []
191
- rubygems_version: 3.1.6
191
+ rubygems_version: 3.4.1
192
192
  signing_key:
193
193
  specification_version: 4
194
194
  summary: Prometheus Instrumentation for Sidekiq