health-monitor-rails 7.3.1 → 7.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 +4 -4
- data/README.md +7 -2
- data/lib/health_monitor/providers/redis.rb +12 -2
- data/lib/health_monitor/providers/sidekiq.rb +17 -2
- data/lib/health_monitor/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 85424832894f22b0c7ea378d9f196b5391b75309
|
4
|
+
data.tar.gz: 4a94ec537d24ec741d9aff84123541abd8a9995a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42aae7d82352be072f1aaa67465cb83bb2643fc372b79d3ebb7699aefe9638b191c9becf834c0e0f138f8a0d64a281e3edb410d8d8dc56aad972a4e9b772a866
|
7
|
+
data.tar.gz: 8895295d39d649d1c53a7a1256d72d7fe4f797ca25d3e323a2b6819cc5c68138b93d381323c2ddbb1000554198fa25b7e681ec86452d4bfaf9b41342517eb065
|
data/README.md
CHANGED
@@ -148,17 +148,21 @@ end
|
|
148
148
|
Some of the providers can also accept additional configuration:
|
149
149
|
|
150
150
|
```ruby
|
151
|
+
# Sidekiq
|
151
152
|
HealthMonitor.configure do |config|
|
152
153
|
config.sidekiq.configure do |sidekiq_config|
|
153
154
|
sidekiq_config.latency = 3.hours
|
155
|
+
sidekiq_config.queue_size = 50
|
154
156
|
end
|
155
157
|
end
|
156
158
|
```
|
157
159
|
|
158
160
|
```ruby
|
161
|
+
# Redis
|
159
162
|
HealthMonitor.configure do |config|
|
160
163
|
config.redis.configure do |redis_config|
|
161
|
-
redis_config.
|
164
|
+
redis_config.connection = Redis.current # use your custom redis connection
|
165
|
+
redis_config.url = 'redis://user:pass@example.redis.com:90210/' # or URL
|
162
166
|
end
|
163
167
|
end
|
164
168
|
```
|
@@ -168,11 +172,12 @@ The currently supported settings are:
|
|
168
172
|
#### Sidekiq
|
169
173
|
|
170
174
|
* `latency`: the latency (in seconds) of a queue (now - when the oldest job was enqueued) which is considered unhealthy (the default is 30 seconds, but larger processing queue should have a larger latency value).
|
175
|
+
* `queue_size`: the size (maximim) of a queue which is considered unhealthy (the default is 100).
|
171
176
|
|
172
177
|
#### Redis
|
173
178
|
|
174
179
|
* `url`: the url used to connect to your Redis instance - note, this is an optional configuration and will use the default connection if not specified
|
175
|
-
|
180
|
+
* `connection`: Use custom redis connection (e.g., `Redis.current`).
|
176
181
|
|
177
182
|
### Adding a Custom Provider
|
178
183
|
It's also possible to add custom health check providers suited for your needs (of course, it's highly appreciated and encouraged if you'd contribute useful providers to the project).
|
@@ -8,7 +8,7 @@ module HealthMonitor
|
|
8
8
|
class Configuration
|
9
9
|
DEFAULT_URL = nil
|
10
10
|
|
11
|
-
attr_accessor :url
|
11
|
+
attr_accessor :url, :connection
|
12
12
|
|
13
13
|
def initialize
|
14
14
|
@url = DEFAULT_URL
|
@@ -26,7 +26,6 @@ module HealthMonitor
|
|
26
26
|
def check!
|
27
27
|
time = Time.now.to_s(:rfc2822)
|
28
28
|
|
29
|
-
redis = configuration.url ? ::Redis.new(url: configuration.url) : ::Redis.new
|
30
29
|
redis.set(key, time)
|
31
30
|
fetched = redis.get(key)
|
32
31
|
|
@@ -42,6 +41,17 @@ module HealthMonitor
|
|
42
41
|
def key
|
43
42
|
@key ||= ['health', request.try(:remote_ip)].join(':')
|
44
43
|
end
|
44
|
+
|
45
|
+
def redis
|
46
|
+
@redis =
|
47
|
+
if configuration.connection
|
48
|
+
configuration.connection
|
49
|
+
elsif configuration.url
|
50
|
+
::Redis.new(url: configuration.url)
|
51
|
+
else
|
52
|
+
::Redis.new
|
53
|
+
end
|
54
|
+
end
|
45
55
|
end
|
46
56
|
end
|
47
57
|
end
|
@@ -8,11 +8,13 @@ module HealthMonitor
|
|
8
8
|
class Sidekiq < Base
|
9
9
|
class Configuration
|
10
10
|
DEFAULT_LATENCY_TIMEOUT = 30
|
11
|
+
DEFAULT_QUEUES_SIZE = 100
|
11
12
|
|
12
|
-
attr_accessor :latency
|
13
|
+
attr_accessor :latency, :queue_size
|
13
14
|
|
14
15
|
def initialize
|
15
16
|
@latency = DEFAULT_LATENCY_TIMEOUT
|
17
|
+
@queue_size = DEFAULT_QUEUES_SIZE
|
16
18
|
end
|
17
19
|
end
|
18
20
|
|
@@ -20,6 +22,7 @@ module HealthMonitor
|
|
20
22
|
check_workers!
|
21
23
|
check_processes!
|
22
24
|
check_latency!
|
25
|
+
check_queue_size!
|
23
26
|
check_redis!
|
24
27
|
rescue Exception => e
|
25
28
|
raise SidekiqException.new(e.message)
|
@@ -47,13 +50,21 @@ module HealthMonitor
|
|
47
50
|
end
|
48
51
|
|
49
52
|
def check_latency!
|
50
|
-
latency =
|
53
|
+
latency = queue.latency
|
51
54
|
|
52
55
|
return unless latency > configuration.latency
|
53
56
|
|
54
57
|
raise "latency #{latency} is greater than #{configuration.latency}"
|
55
58
|
end
|
56
59
|
|
60
|
+
def check_queue_size!
|
61
|
+
size = queue.size
|
62
|
+
|
63
|
+
return unless size > configuration.queue_size
|
64
|
+
|
65
|
+
raise "queue size #{size} is greater than #{configuration.queue_size}"
|
66
|
+
end
|
67
|
+
|
57
68
|
def check_redis!
|
58
69
|
if ::Sidekiq.respond_to?(:redis_info)
|
59
70
|
::Sidekiq.redis_info
|
@@ -61,6 +72,10 @@ module HealthMonitor
|
|
61
72
|
::Sidekiq.redis(&:info)
|
62
73
|
end
|
63
74
|
end
|
75
|
+
|
76
|
+
private def queue
|
77
|
+
@queue ||= ::Sidekiq::Queue.new
|
78
|
+
end
|
64
79
|
end
|
65
80
|
end
|
66
81
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: health-monitor-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.
|
4
|
+
version: 7.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leonid Beder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-12-
|
11
|
+
date: 2017-12-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -170,14 +170,14 @@ dependencies:
|
|
170
170
|
requirements:
|
171
171
|
- - ">="
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
173
|
+
version: '0.5'
|
174
174
|
type: :development
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
178
|
- - ">="
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version: '0'
|
180
|
+
version: '0.5'
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: sidekiq
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|