sidekiq_prometheus 1.1.0 → 1.5.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 533328fbd15652e9ffdc91457329eff4680f0a897b312343f9a3bea92c22795f
4
- data.tar.gz: 3fa2b8614e19dd00baebd3387ddebfd52492901016a9a3ec6edb70a19d013716
3
+ metadata.gz: 49989dd6e8b4c7c651f70d69e674630900cf5eb3150c4be85df6becb83fc1d18
4
+ data.tar.gz: c42b2eac238eaa7c435628962872c750c08b1430a8166219de0343c4fe987fa5
5
5
  SHA512:
6
- metadata.gz: e0e51ed626201c49c023e914bbb5676d158f5e6cad2369a0b9b2b1fd8506d2190b6b905de1e34d7d39a4d2ce211feeb4ae005c42bdc63fda94e942bbe5dc4540
7
- data.tar.gz: 67c7663c062de7105d921818b499c5bf0e8e6b2c4109b5d08ea513f94c526967dea885185782a3f2895ca22b569798b2fc1e993041f2fc8ff6f8c53dc142168e
6
+ metadata.gz: 23702691b261c1f0ea0984cccca1267cb5ad3be7a3ebd0ea4c7591d12bb9403e5104cedc372b023f440e080a71ff5c432022f35527ff1e898dba5d07a36ab056
7
+ data.tar.gz: 84197b360bbe8c54da5c1e83911643a274a132164bf699d2f8672fbc908e93216918dc405f829f919f9a27fbbaf25d4bed26ff132428f29d14599a5eed1f1d73
data/.travis.yml CHANGED
@@ -1,7 +1,8 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
+ - 3.0
5
+ - 2.7
6
+ - 2.6
4
7
  - 2.5
5
- - 2.4
6
- - 2.3
7
- before_install: gem install bundler -v 1.16.1
8
+ before_install: gem install bundler -v 2.2.15
data/CHANGELOG.md CHANGED
@@ -1,5 +1,57 @@
1
1
  CHANGELOG
2
2
 
3
+
4
+ <a name="v1.5.0"></a>
5
+ ## [v1.5.0](https://github.com/fastly/sidekiq-prometheus/compare/v1.4.0...v1.5.0) (2021-08-02)
6
+
7
+ ### Pull Requests
8
+
9
+ * Merge pull request [#23](https://github.com/fastly/sidekiq-prometheus/issues/23) from fastly/rainy/add-error-class-label
10
+
11
+
12
+ <a name="v1.4.0"></a>
13
+ ## [v1.4.0](https://github.com/fastly/sidekiq-prometheus/compare/v1.3.0...v1.4.0) (2021-03-30)
14
+
15
+ ### Pull Requests
16
+
17
+ * Merge pull request [#21](https://github.com/fastly/sidekiq-prometheus/issues/21) from Kevinrob/patch-1
18
+
19
+
20
+ <a name="v1.3.0"></a>
21
+ ## [v1.3.0](https://github.com/fastly/sidekiq-prometheus/compare/v1.2.0...v1.3.0) (2021-03-26)
22
+
23
+ ### Pull Requests
24
+
25
+ * Merge pull request [#22](https://github.com/fastly/sidekiq-prometheus/issues/22) from mirubiri/add-active-job-support
26
+ * Merge pull request [#20](https://github.com/fastly/sidekiq-prometheus/issues/20) from fastly/aw/move-to-main
27
+
28
+ <a name="v1.2.0"></a>
29
+ ## [v1.2.0](https://github.com/fastly/sidekiq-prometheus/compare/v1.1.0...v1.2.0) (2020-10-01)
30
+
31
+ ### Feature
32
+
33
+ * allow the metrics host to be disabled with a configuration option
34
+ * use prometheus-client ~> 2.0
35
+
36
+ ### Pull Requests
37
+
38
+ * Merge pull request [#17](https://github.com/fastly/sidekiq-prometheus/issues/17) from jetpks/add-option-to-disable-metrics-server
39
+ * Merge pull request [#15](https://github.com/fastly/sidekiq-prometheus/issues/15) from silicakes/master
40
+
41
+ <a name="v1.1.0"></a>
42
+ ## [v1.1.0](https://github.com/fastly/sidekiq-prometheus/compare/v1.0.1...v1.1.0) (2020-02-12)
43
+
44
+ ### Feature
45
+
46
+ * allow for configuration of the metrics host (instead of always binding to 127.0.0.1)
47
+ * Use prometheus-client ~> 1.0.0
48
+
49
+ ### Pull Requests
50
+
51
+ * Merge pull request [#13](https://github.com/fastly/sidekiq-prometheus/issues/13) from postmodern/metrics_host
52
+ * Merge pull request [#11](https://github.com/fastly/sidekiq-prometheus/issues/11) from rossjones/patch-1
53
+ * Merge pull request [#12](https://github.com/fastly/sidekiq-prometheus/issues/12) from fastly/hr
54
+
3
55
  <a name="v1.0.0"></a>
4
56
  ## [v1.0.0](https://github.com/fastly/sidekiq-prometheus/compare/v0.9.1...v1.0.0) (2019-10-24)
5
57
 
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Sidekiq Prometheus
2
2
 
3
3
 
4
- [![Status](https://travis-ci.org/fastly/sidekiq-prometheus.svg?branch=master)](https://travis-ci.org/fastly/sidekiq-prometheus)
4
+ [![Status](https://travis-ci.org/fastly/sidekiq-prometheus.svg?branch=main)](https://travis-ci.org/fastly/sidekiq-prometheus)
5
5
  ![Gem](https://img.shields.io/gem/v/sidekiq_prometheus.svg?color=blue)
6
6
  [![MIT license](http://img.shields.io/badge/license-MIT-brightgreen.svg)](http://opensource.org/licenses/MIT)
7
7
 
@@ -81,6 +81,7 @@ end
81
81
  * `global_metrics_enabled`: Boolean that determines whether to report global metrics from the PeriodicMetrics reporter. When `true` this will report on a number of stats from the Sidekiq API for the cluster. This requires Sidekiq::Enterprise as the reporter uses the leader election functionality to ensure that only one worker per cluster is reporting metrics.
82
82
  * `periodic_metrics_enabled`: Boolean that determines whether to run the periodic metrics reporter. `PeriodicMetrics` runs a separate thread that reports on global metrics (if enabled) as well worker GC stats (if enabled). It reports metrics on the interval defined by `periodic_reporting_interval`. Defaults to `true`.
83
83
  * `periodic_reporting_interval`: interval in seconds for reporting periodic metrics. Default: `30`
84
+ * `metrics_server_enabled`: Boolean that determines whether to run the rack server. Defaults to `true`
84
85
  * `metrics_host`: Host on which the rack server will listen. Defaults to
85
86
  `localhost`
86
87
  * `metrics_port`: Port on which the rack server will listen. Defaults to `9359`
@@ -94,6 +95,7 @@ SidekiqPrometheus.configure do |config|
94
95
  config.global_metrics_enabled = true
95
96
  config.periodic_metrics_enabled = true
96
97
  config.periodic_reporting_interval = 20
98
+ config.metrics_server_enabled = true
97
99
  config.metrics_port = 8675
98
100
  end
99
101
  ```
@@ -245,7 +247,7 @@ See the [documentation of the Prometheus::Client library](https://github.com/pro
245
247
 
246
248
  ## Development
247
249
 
248
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
250
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
249
251
 
250
252
  To install this gem onto your local machine, run `bundle exec rake install`.
251
253
 
@@ -253,6 +255,9 @@ To install this gem onto your local machine, run `bundle exec rake install`.
253
255
 
254
256
  * Lukas Eklund ([@leklund](https://github.com/leklund))
255
257
  * NHM Tanveer Hossain Khan ([@we4tech](https://github.com/we4tech))
258
+ * [@Postmodern](https://github.com/postmodern)
259
+ * Ross Jones ([@rossjones](https://github.com/rossjones))
260
+ * Alejandro Arrufat ([@mirubiri](https://github.com/mirubiri))
256
261
 
257
262
  ## Contributing
258
263
 
@@ -268,7 +273,7 @@ The gem is available as open source under the terms of the [MIT License](https:/
268
273
 
269
274
  ## Code of Conduct
270
275
 
271
- Everyone interacting in the SidekiqPrometheus project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/fastly/sidekiq-prometheus/blob/master/CODE_OF_CONDUCT.md).
276
+ Everyone interacting in the SidekiqPrometheus project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/fastly/sidekiq-prometheus/blob/main/CODE_OF_CONDUCT.md).
272
277
 
273
278
  # Metadata
274
279
 
@@ -6,6 +6,7 @@ require 'prometheus/client'
6
6
  require 'prometheus/middleware/exporter'
7
7
  require 'sidekiq'
8
8
  require 'sidekiq/api'
9
+ require 'webrick'
9
10
 
10
11
  begin
11
12
  require 'sidekiq/ent'
@@ -47,6 +48,9 @@ module SidekiqPrometheus
47
48
  # @return [Integer] Interval in seconds to record metrics. Default: 30
48
49
  attr_accessor :periodic_reporting_interval
49
50
 
51
+ # @return [Boolean] Setting to control enabling/disabling the metrics server. Default: true
52
+ attr_accessor :metrics_server_enabled
53
+
50
54
  # @return [String] Host on which the metrics server will listen. Default: localhost
51
55
  attr_accessor :metrics_host
52
56
 
@@ -69,6 +73,7 @@ module SidekiqPrometheus
69
73
  self.periodic_metrics_enabled = true
70
74
  self.global_metrics_enabled = true
71
75
  self.periodic_reporting_interval = 30
76
+ self.metrics_server_enabled = true
72
77
  self.metrics_host = 'localhost'
73
78
  self.metrics_port = 9359
74
79
  self.custom_labels = {}
@@ -117,6 +122,13 @@ module SidekiqPrometheus
117
122
  periodic_metrics_enabled
118
123
  end
119
124
 
125
+ ##
126
+ # Helper method for +metrics_server_enabled+ configuration setting
127
+ # @return [Boolean] defaults to true
128
+ def metrics_server_enabled?
129
+ metrics_server_enabled
130
+ end
131
+
120
132
  ##
121
133
  # Get a metric from the registry
122
134
  # @param metric [Symbol] name of metric to fetch
@@ -176,8 +188,10 @@ module SidekiqPrometheus
176
188
  config.on(:shutdown) { SidekiqPrometheus::PeriodicMetrics.reporter.stop }
177
189
  end
178
190
 
179
- config.on(:startup) { SidekiqPrometheus.metrics_server }
180
- config.on(:shutdown) { SidekiqPrometheus.metrics_server.kill }
191
+ if metrics_server_enabled?
192
+ config.on(:startup) { SidekiqPrometheus.metrics_server }
193
+ config.on(:shutdown) { SidekiqPrometheus.metrics_server.kill }
194
+ end
181
195
  end
182
196
  end
183
197
 
@@ -1,10 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class SidekiqPrometheus::JobMetrics
4
- def call(worker, _job, queue)
4
+ def call(worker, job, queue)
5
5
  before = GC.stat(:total_allocated_objects) if SidekiqPrometheus.gc_metrics_enabled?
6
6
 
7
- labels = { class: worker.class.to_s, queue: queue }
7
+ # If we're using a wrapper class, like ActiveJob, use the "wrapped"
8
+ # attribute to expose the underlying thing.
9
+ labels = {
10
+ class: job['wrapped'] || worker.class.to_s,
11
+ queue: queue,
12
+ }
8
13
 
9
14
  begin
10
15
  labels.merge!(custom_labels(worker))
@@ -25,7 +30,8 @@ class SidekiqPrometheus::JobMetrics
25
30
 
26
31
  result
27
32
  rescue StandardError => e
28
- registry[:sidekiq_job_failed].increment(labels: labels)
33
+ err_label = { :error_class => e.class.to_s }
34
+ registry[:sidekiq_job_failed].increment(labels: err_label.merge(labels))
29
35
  raise e
30
36
  ensure
31
37
  registry[:sidekiq_job_count].increment(labels: labels)
@@ -64,7 +64,7 @@ module SidekiqPrometheus::Metrics
64
64
  { name: :sidekiq_job_failed,
65
65
  type: :counter,
66
66
  docstring: 'Count of failed Sidekiq jobs',
67
- labels: JOB_LABELS, },
67
+ labels: JOB_LABELS + [:error_class], },
68
68
  { name: :sidekiq_job_success,
69
69
  type: :counter,
70
70
  docstring: 'Count of successful Sidekiq jobs',
@@ -107,7 +107,7 @@ module SidekiqPrometheus::Metrics
107
107
  end
108
108
 
109
109
  def register_sidekiq_gc_metric
110
- register SIDEKIQ_GC_METRIC
110
+ register(**SIDEKIQ_GC_METRIC)
111
111
  end
112
112
 
113
113
  def register_sidekiq_worker_gc_metrics
@@ -120,7 +120,7 @@ module SidekiqPrometheus::Metrics
120
120
 
121
121
  def register_metrics(metrics)
122
122
  metrics.each do |metric|
123
- register(metric)
123
+ register(**metric)
124
124
  end
125
125
  end
126
126
 
@@ -159,7 +159,7 @@ module SidekiqPrometheus::Metrics
159
159
 
160
160
  options[:buckets] = buckets if buckets
161
161
 
162
- registry.send(type, name.to_sym, options)
162
+ registry.send(type, name.to_sym, **options)
163
163
  end
164
164
 
165
165
  def unregister(name:)
@@ -8,7 +8,7 @@
8
8
  # one worker.
9
9
  #
10
10
  # @see https://github.com/mperham/sidekiq/wiki/Ent-Leader-Election
11
- # @see https://github.com/mperham/sidekiq/blob/master/lib/sidekiq/api.rb
11
+ # @see https://github.com/mperham/sidekiq/blob/main/lib/sidekiq/api.rb
12
12
 
13
13
  class SidekiqPrometheus::PeriodicMetrics
14
14
  # @return [Boolean] When +true+ will stop the reporting loop.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SidekiqPrometheus
4
- VERSION = '1.1.0'
4
+ VERSION = '1.5.0'
5
5
  end
@@ -23,11 +23,12 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.add_development_dependency 'bundler'
25
25
  spec.add_development_dependency 'pry'
26
- spec.add_development_dependency 'rake', '~> 10.0'
26
+ spec.add_development_dependency 'rake', '~> 12.3.3'
27
27
  spec.add_development_dependency 'rspec', '~> 3.0'
28
28
  spec.add_development_dependency 'rubocop', '~> 0.58.0'
29
29
 
30
- spec.add_runtime_dependency 'prometheus-client', '~> 1.0'
30
+ spec.add_runtime_dependency 'prometheus-client', '~> 2.0'
31
31
  spec.add_runtime_dependency 'rack'
32
32
  spec.add_runtime_dependency 'sidekiq', '> 5.1'
33
+ spec.add_runtime_dependency 'webrick'
33
34
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq_prometheus
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lukas Eklund
8
8
  - NHM Tanveer Hossain Khan
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-02-12 00:00:00.000000000 Z
12
+ date: 2021-08-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -45,14 +45,14 @@ dependencies:
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: '10.0'
48
+ version: 12.3.3
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: '10.0'
55
+ version: 12.3.3
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rspec
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -87,14 +87,14 @@ dependencies:
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: '1.0'
90
+ version: '2.0'
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: '1.0'
97
+ version: '2.0'
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: rack
100
100
  requirement: !ruby/object:Gem::Requirement
@@ -123,7 +123,21 @@ dependencies:
123
123
  - - ">"
124
124
  - !ruby/object:Gem::Version
125
125
  version: '5.1'
126
- description:
126
+ - !ruby/object:Gem::Dependency
127
+ name: webrick
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ">="
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ type: :runtime
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ">="
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ description:
127
141
  email:
128
142
  - leklund@fastly.com
129
143
  executables: []
@@ -153,7 +167,7 @@ homepage: https://github.com/fastly/sidekiq-prometheus
153
167
  licenses:
154
168
  - MIT
155
169
  metadata: {}
156
- post_install_message:
170
+ post_install_message:
157
171
  rdoc_options: []
158
172
  require_paths:
159
173
  - lib
@@ -168,9 +182,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
182
  - !ruby/object:Gem::Version
169
183
  version: '0'
170
184
  requirements: []
171
- rubyforge_project:
172
- rubygems_version: 2.7.8
173
- signing_key:
185
+ rubygems_version: 3.1.6
186
+ signing_key:
174
187
  specification_version: 4
175
188
  summary: Prometheus Instrumentation for Sidekiq
176
189
  test_files: []