sidekiq_status_monitor 1.0.1 → 1.3.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: 1fb83885ad80397022235ff27e46d85eac13daf7b099c1a1c4b0eb1774b19163
4
- data.tar.gz: 125eebb6cd0f9ab6b62098c9e1dd5b813e93167b98e3971e2fbca4b45d73548b
3
+ metadata.gz: 43f743fdd2f2a6715c72c09ab7e6a2c2635eb86c831834e93186fdf8bb93d7cb
4
+ data.tar.gz: 872cc70e64be7482f1861295d0f6d42f8f0aa0585243ef5be96d058afbad675e
5
5
  SHA512:
6
- metadata.gz: 800faf00a933fe75c179a97f418268c3c108529eba8d62b9fa892b94d0a0cd6388778afd59f35b0220b530ce7d666a3ecb6d4b4744b4c3dcbe3bc53d6b2cb0a9
7
- data.tar.gz: dceef546daac35a56fa9a386d902b81573a69b5f62143798fab82777c08e2b899e1412ea6fde07e82391faee8e73134cd7d955b1fe0c21ff206288ca90d31488
6
+ metadata.gz: 0bc646670c6033a0323b6e460ff8efdd9fb1f07ef527d623a5811da2ac981489a831528f190fe49ee401734487920bbdb419193665d2615414b0b37bb8c637cd
7
+ data.tar.gz: 1d1864b8d2a9c5b91df6307b50a734f3de2500692ae4e9f3dfa89686e0024db4cb9a7de40f12c6050ecaf50d64d695e56e9988953526b1d82e3fa547aa45acd7
data/README.md CHANGED
@@ -10,32 +10,9 @@ This library can be used to check sidekiq health outside kubernetes.
10
10
 
11
11
  **How?**
12
12
 
13
- A http server is started and on each requests validates that a liveness key is stored in Redis. If it is there means is working.
13
+ An additional HTTP server is started during Sidekiq worker initialisation and on each request validates that the Sidekiq worker metrics look healthy.
14
14
 
15
- A Sidekiq worker is the responsible to storing this key. If Sidekiq stops processing workers
16
- this key gets expired by Redis an consequently the http server will return a 500 error.
17
-
18
- This worker is responsible to requeue itself for the next liveness probe.
19
-
20
- Each instance in kubernetes will be checked based on `ENV` variable `HOSTNAME` (kubernetes sets this for each replica/pod).
21
-
22
- On initialization SidekiqStatusMonitor will asign to Sidekiq::Worker a queue with the current host and add this queue to the current instance queues to process.
23
-
24
- example:
25
-
26
- ```
27
- hostname: foo
28
- Worker queue: sidekiq_status_monitor-foo
29
- instance queues:
30
- - sidekiq_status_monitor-foo
31
- *- your queues
32
-
33
- hostname: bar
34
- Worker queue: sidekiq_status_monitor-bar
35
- instance queues:
36
- - sidekiq_status_monitor-bar
37
- *- your queues
38
- ```
15
+ It reports either 200 or 500 HTTP code with additional JSON payload which includes metrics values.
39
16
 
40
17
  ## Installation
41
18
 
@@ -5,16 +5,16 @@ module SidekiqStatusMonitor
5
5
  include Singleton
6
6
 
7
7
  attr_accessor :host,
8
- :port,
9
- :path,
10
- :server,
11
- :logger,
12
- :shutdown_callback,
13
- :workers_size_threshold,
14
- :process_set_size_threshold,
15
- :queues_size_threshold,
16
- :queue_latency_threshold,
17
- :queue_size_threshold
8
+ :port,
9
+ :path,
10
+ :server,
11
+ :logger,
12
+ :shutdown_callback,
13
+ :workers_size_threshold,
14
+ :process_set_size_threshold,
15
+ :queues_size_threshold,
16
+ :queue_latency_threshold,
17
+ :queue_size_threshold
18
18
 
19
19
  def initialize
20
20
  set_defaults
@@ -43,9 +43,9 @@ module SidekiqStatusMonitor
43
43
 
44
44
  private
45
45
 
46
- def redis(&block)
46
+ def redis(&)
47
47
  # Default to Sidekiq.redis if capsule is not configured yet but redis adapter is accessed
48
- (@capsule || Sidekiq).redis(&block)
48
+ (@capsule || Sidekiq).redis(&)
49
49
  end
50
50
  end
51
51
  end
@@ -37,8 +37,8 @@ module SidekiqStatusMonitor
37
37
 
38
38
  private
39
39
 
40
- def redis(&block)
41
- Sidekiq.redis(&block)
40
+ def redis(&)
41
+ Sidekiq.redis(&)
42
42
  end
43
43
  end
44
44
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "rack"
3
+ require "rackup"
4
4
 
5
5
  module SidekiqStatusMonitor
6
6
  class Server
@@ -14,7 +14,7 @@ module SidekiqStatusMonitor
14
14
  end
15
15
 
16
16
  def run!
17
- handler = Rack::Handler.get(@engine)
17
+ handler = Rackup::Handler.get(@engine)
18
18
  Signal.trap("TERM") { handler.shutdown }
19
19
  handler.run(
20
20
  self,
@@ -36,7 +36,7 @@ module SidekiqStatusMonitor
36
36
  def call(_env)
37
37
  [
38
38
  alive? ? 200 : 500,
39
- { "Content-Type" => "application/json" },
39
+ {"Content-Type" => "application/json"},
40
40
  [payload.to_json]
41
41
  ]
42
42
  end
@@ -1,3 +1,3 @@
1
1
  module SidekiqStatusMonitor
2
- VERSION = '1.0.1'
2
+ VERSION = "1.3.0"
3
3
  end
@@ -101,8 +101,8 @@ module SidekiqStatusMonitor
101
101
  queues.map(&:name).uniq.sort
102
102
  end
103
103
 
104
- def self.new_probe(name, &block)
105
- define_method("#{PROBE_METHOD_PREFIX}#{name}", &block)
104
+ def self.new_probe(name, &)
105
+ define_method(:"#{PROBE_METHOD_PREFIX}#{name}", &)
106
106
  end
107
107
 
108
108
  new_probe :workers_size do
@@ -126,7 +126,7 @@ module SidekiqStatusMonitor
126
126
  end
127
127
 
128
128
  def probes
129
- methods.grep(/^#{PROBE_METHOD_PREFIX}/).map { |m| [m, send(m)] }.to_h
129
+ methods.grep(/^#{PROBE_METHOD_PREFIX}/o).map { |m| [m, send(m)] }.to_h
130
130
  end
131
131
 
132
132
  def alive?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq_status_monitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrei Makarov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-12 00:00:00.000000000 Z
11
+ date: 2024-06-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -95,47 +95,61 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '4.0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: rubocop-shopify
98
+ name: solargraph
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '2.10'
103
+ version: 0.49.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: '2.10'
110
+ version: 0.49.0
111
111
  - !ruby/object:Gem::Dependency
112
- name: solargraph
112
+ name: standard
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.49.0
117
+ version: '1'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 0.49.0
124
+ version: '1'
125
125
  - !ruby/object:Gem::Dependency
126
- name: rack
126
+ name: standard-performance
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "<"
129
+ - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '3'
132
- type: :runtime
131
+ version: '1'
132
+ type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - "<"
136
+ - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '3'
138
+ version: '1'
139
+ - !ruby/object:Gem::Dependency
140
+ name: standard-rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.2'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '0.2'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: sidekiq
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -176,6 +190,26 @@ dependencies:
176
190
  - - "<"
177
191
  - !ruby/object:Gem::Version
178
192
  version: '2'
193
+ - !ruby/object:Gem::Dependency
194
+ name: rackup
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: '2'
200
+ - - "<"
201
+ - !ruby/object:Gem::Version
202
+ version: '3'
203
+ type: :runtime
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - ">="
208
+ - !ruby/object:Gem::Version
209
+ version: '2'
210
+ - - "<"
211
+ - !ruby/object:Gem::Version
212
+ version: '3'
179
213
  description: |
180
214
  SidekiqStatusMonitor offers a solution to add HTTP server for the sidekiq instance.
181
215
 
@@ -206,7 +240,7 @@ metadata:
206
240
  homepage_uri: https://github.com/amkisko/sidekiq_status_monitor
207
241
  source_code_uri: https://github.com/amkisko/sidekiq_status_monitor
208
242
  changelog_uri: https://github.com/amkisko/sidekiq_status_monitor/releases
209
- documentation_uri: https://github.com/amkisko/sidekiq_status_monitor/blob/v1.0.1/README.md
243
+ documentation_uri: https://github.com/amkisko/sidekiq_status_monitor/blob/v1.3.0/README.md
210
244
  bug_tracker_uri: https://github.com/amkisko/sidekiq_status_monitor/issues
211
245
  post_install_message:
212
246
  rdoc_options: []
@@ -223,7 +257,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
223
257
  - !ruby/object:Gem::Version
224
258
  version: '0'
225
259
  requirements: []
226
- rubygems_version: 3.4.19
260
+ rubygems_version: 3.5.9
227
261
  signing_key:
228
262
  specification_version: 4
229
263
  summary: Rack server that outputs HTTP JSON status of sidekiq instance for alive/liveness