sidekiq_prometheus 1.0.0 → 1.4.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: d3f496cf0e6e5f8cd1b1642d324029bfaa2eec41eed88c54c570cda486a25d9c
4
- data.tar.gz: 64b0a6b104b23cb4081bbb5d006b8fd958b397a18e2c35c4cdcb37c9b8ac8e25
3
+ metadata.gz: bd485c3e82871eb0083e0f8c66b506d72624cdc48bcee1fa2e3c0d45eee9a8fa
4
+ data.tar.gz: a1e2fa1f170d6c2115c6de05bb9f029f4bc6c54f0fa208a683c9a074afc06c06
5
5
  SHA512:
6
- metadata.gz: e14cb219e363d1d13e1c1c40fd56e14e0dcbb873240482ef685f48a948f170af0f7e44d3530ceff578b421f1d938445526e98311b0b8d4280f27d7d4863bd3f9
7
- data.tar.gz: e309be13ae7d718f1746d4fdb05977673b4d1f067e979bb37309280c0d7bf8de6b6b7f73f9cabea1ad9459d995a98b76c334ba73c2a272ec6e6e3496b6cd402a
6
+ metadata.gz: f52ccff4847c333ba9c50d9e5033214f0d739edd4eca461b1b9b5406c6d236505b0e3e7fcc04f7f26bc460debb16e0ada2f1834ffc49c73b24f8c9369fe21bff
7
+ data.tar.gz: 7e0e854ab573ead62b8ff19a1a8d736587e00250a4fd447a9bbc393d1765c7eab8083d6beb9f14ac7e766d88d28875088f8ee5a3bf2c77d34a1d00af5a573136
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,40 @@
1
1
  CHANGELOG
2
2
 
3
+ <a name="v1.3.0"></a>
4
+ ## [v1.3.0](https://github.com/fastly/sidekiq-prometheus/compare/v1.2.0...v1.3.0) (2021-03-26)
5
+
6
+ ### Pull Requests
7
+
8
+ * Merge pull request [#22](https://github.com/fastly/sidekiq-prometheus/issues/22) from mirubiri/add-active-job-support
9
+ * Merge pull request [#20](https://github.com/fastly/sidekiq-prometheus/issues/20) from fastly/aw/move-to-main
10
+
11
+ <a name="v1.2.0"></a>
12
+ ## [v1.2.0](https://github.com/fastly/sidekiq-prometheus/compare/v1.1.0...v1.2.0) (2020-10-01)
13
+
14
+ ### Feature
15
+
16
+ * allow the metrics host to be disabled with a configuration option
17
+ * use prometheus-client ~> 2.0
18
+
19
+ ### Pull Requests
20
+
21
+ * Merge pull request [#17](https://github.com/fastly/sidekiq-prometheus/issues/17) from jetpks/add-option-to-disable-metrics-server
22
+ * Merge pull request [#15](https://github.com/fastly/sidekiq-prometheus/issues/15) from silicakes/master
23
+
24
+ <a name="v1.1.0"></a>
25
+ ## [v1.1.0](https://github.com/fastly/sidekiq-prometheus/compare/v1.0.1...v1.1.0) (2020-02-12)
26
+
27
+ ### Feature
28
+
29
+ * allow for configuration of the metrics host (instead of always binding to 127.0.0.1)
30
+ * Use prometheus-client ~> 1.0.0
31
+
32
+ ### Pull Requests
33
+
34
+ * Merge pull request [#13](https://github.com/fastly/sidekiq-prometheus/issues/13) from postmodern/metrics_host
35
+ * Merge pull request [#11](https://github.com/fastly/sidekiq-prometheus/issues/11) from rossjones/patch-1
36
+ * Merge pull request [#12](https://github.com/fastly/sidekiq-prometheus/issues/12) from fastly/hr
37
+
3
38
  <a name="v1.0.0"></a>
4
39
  ## [v1.0.0](https://github.com/fastly/sidekiq-prometheus/compare/v0.9.1...v1.0.0) (2019-10-24)
5
40
 
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,9 @@ 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`
85
+ * `metrics_host`: Host on which the rack server will listen. Defaults to
86
+ `localhost`
84
87
  * `metrics_port`: Port on which the rack server will listen. Defaults to `9359`
85
88
  * `registry`: An instance of `Prometheus::Client::Registry`. If you have a registry with defined metrics you can use this option to pass in your registry.
86
89
 
@@ -92,6 +95,7 @@ SidekiqPrometheus.configure do |config|
92
95
  config.global_metrics_enabled = true
93
96
  config.periodic_metrics_enabled = true
94
97
  config.periodic_reporting_interval = 20
98
+ config.metrics_server_enabled = true
95
99
  config.metrics_port = 8675
96
100
  end
97
101
  ```
@@ -243,10 +247,18 @@ See the [documentation of the Prometheus::Client library](https://github.com/pro
243
247
 
244
248
  ## Development
245
249
 
246
- 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.
247
251
 
248
252
  To install this gem onto your local machine, run `bundle exec rake install`.
249
253
 
254
+ ## Contributors
255
+
256
+ * Lukas Eklund ([@leklund](https://github.com/leklund))
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))
261
+
250
262
  ## Contributing
251
263
 
252
264
  Bug reports and pull requests are welcome on GitHub at https://github.com/fastly/sidekiq-prometheus. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
@@ -261,4 +273,8 @@ The gem is available as open source under the terms of the [MIT License](https:/
261
273
 
262
274
  ## Code of Conduct
263
275
 
264
- 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).
277
+
278
+ # Metadata
279
+
280
+ - Ignore
@@ -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,12 @@ 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
+
54
+ # @return [String] Host on which the metrics server will listen. Default: localhost
55
+ attr_accessor :metrics_host
56
+
50
57
  # @return [Integer] Port on which the metrics server will listen. Default: 9357
51
58
  attr_accessor :metrics_port
52
59
 
@@ -66,6 +73,8 @@ module SidekiqPrometheus
66
73
  self.periodic_metrics_enabled = true
67
74
  self.global_metrics_enabled = true
68
75
  self.periodic_reporting_interval = 30
76
+ self.metrics_server_enabled = true
77
+ self.metrics_host = 'localhost'
69
78
  self.metrics_port = 9359
70
79
  self.custom_labels = {}
71
80
  self.custom_metrics = []
@@ -113,6 +122,13 @@ module SidekiqPrometheus
113
122
  periodic_metrics_enabled
114
123
  end
115
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
+
116
132
  ##
117
133
  # Get a metric from the registry
118
134
  # @param metric [Symbol] name of metric to fetch
@@ -172,14 +188,17 @@ module SidekiqPrometheus
172
188
  config.on(:shutdown) { SidekiqPrometheus::PeriodicMetrics.reporter.stop }
173
189
  end
174
190
 
175
- config.on(:startup) { SidekiqPrometheus.metrics_server }
176
- 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
177
195
  end
178
196
  end
179
197
 
180
198
  ##
181
199
  # Start a new Prometheus exporter in a new thread.
182
- # Will listen on SidekiqPrometheus.metrics_port
200
+ # Will listen on SidekiqPrometheus.metrics_host and
201
+ # SidekiqPrometheus.metrics_port
183
202
  def metrics_server
184
203
  @_metrics_server ||= Thread.new do
185
204
  Rack::Handler::WEBrick.run(
@@ -188,7 +207,7 @@ module SidekiqPrometheus
188
207
  run ->(_) { [301, { 'Location' => '/metrics' }, []] }
189
208
  },
190
209
  Port: SidekiqPrometheus.metrics_port,
191
- BindAddress: '127.0.0.1',
210
+ Host: SidekiqPrometheus.metrics_host,
192
211
  )
193
212
  end
194
213
  end
@@ -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))
@@ -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.0.0'
4
+ VERSION = '1.4.0'
5
5
  end
@@ -7,7 +7,7 @@ require 'sidekiq_prometheus/version'
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'sidekiq_prometheus'
9
9
  spec.version = SidekiqPrometheus::VERSION
10
- spec.authors = ['Lukas Eklund']
10
+ spec.authors = ['Lukas Eklund', 'NHM Tanveer Hossain Khan']
11
11
  spec.email = ['leklund@fastly.com']
12
12
 
13
13
  spec.summary = 'Prometheus Instrumentation for Sidekiq'
@@ -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', '~> 0.10.0'
30
+ spec.add_runtime_dependency 'prometheus-client', '~> 2.0'
31
31
  spec.add_runtime_dependency 'rack'
32
- spec.add_runtime_dependency 'sidekiq', '~> 5.1'
32
+ spec.add_runtime_dependency 'sidekiq', '> 5.1'
33
+ spec.add_runtime_dependency 'webrick'
33
34
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq_prometheus
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lukas Eklund
8
- autorequire:
8
+ - NHM Tanveer Hossain Khan
9
+ autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2019-10-24 00:00:00.000000000 Z
12
+ date: 2021-03-30 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
@@ -44,14 +45,14 @@ dependencies:
44
45
  requirements:
45
46
  - - "~>"
46
47
  - !ruby/object:Gem::Version
47
- version: '10.0'
48
+ version: 12.3.3
48
49
  type: :development
49
50
  prerelease: false
50
51
  version_requirements: !ruby/object:Gem::Requirement
51
52
  requirements:
52
53
  - - "~>"
53
54
  - !ruby/object:Gem::Version
54
- version: '10.0'
55
+ version: 12.3.3
55
56
  - !ruby/object:Gem::Dependency
56
57
  name: rspec
57
58
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +87,14 @@ dependencies:
86
87
  requirements:
87
88
  - - "~>"
88
89
  - !ruby/object:Gem::Version
89
- version: 0.10.0
90
+ version: '2.0'
90
91
  type: :runtime
91
92
  prerelease: false
92
93
  version_requirements: !ruby/object:Gem::Requirement
93
94
  requirements:
94
95
  - - "~>"
95
96
  - !ruby/object:Gem::Version
96
- version: 0.10.0
97
+ version: '2.0'
97
98
  - !ruby/object:Gem::Dependency
98
99
  name: rack
99
100
  requirement: !ruby/object:Gem::Requirement
@@ -112,17 +113,31 @@ dependencies:
112
113
  name: sidekiq
113
114
  requirement: !ruby/object:Gem::Requirement
114
115
  requirements:
115
- - - "~>"
116
+ - - ">"
116
117
  - !ruby/object:Gem::Version
117
118
  version: '5.1'
118
119
  type: :runtime
119
120
  prerelease: false
120
121
  version_requirements: !ruby/object:Gem::Requirement
121
122
  requirements:
122
- - - "~>"
123
+ - - ">"
123
124
  - !ruby/object:Gem::Version
124
125
  version: '5.1'
125
- 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:
126
141
  email:
127
142
  - leklund@fastly.com
128
143
  executables: []
@@ -152,7 +167,7 @@ homepage: https://github.com/fastly/sidekiq-prometheus
152
167
  licenses:
153
168
  - MIT
154
169
  metadata: {}
155
- post_install_message:
170
+ post_install_message:
156
171
  rdoc_options: []
157
172
  require_paths:
158
173
  - lib
@@ -167,9 +182,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
182
  - !ruby/object:Gem::Version
168
183
  version: '0'
169
184
  requirements: []
170
- rubyforge_project:
171
- rubygems_version: 2.7.8
172
- signing_key:
185
+ rubygems_version: 3.0.6
186
+ signing_key:
173
187
  specification_version: 4
174
188
  summary: Prometheus Instrumentation for Sidekiq
175
189
  test_files: []