sidekiq-cloudwatchmetrics 2.5.0 → 2.7.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
- checksums.yaml.gz.sig +0 -0
- data/README.md +6 -3
- data/lib/sidekiq/cloudwatchmetrics.rb +32 -14
- data.tar.gz.sig +1 -1
- metadata +17 -18
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 894ace11258aeb70fd06f4201fb84f493406199eb4bce1c97cd0c2627e69c9fa
|
4
|
+
data.tar.gz: c88fde8c0c0564f6036c1bc0e08ea14b0b02a89fb20026adca88c400b3bc08a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d82aecd5e61a8bcae2ab4873d47e9a3377325a8862b16dccff194cd80927c480007a4d20b966dc3c9fa60bace2ffd4db63fb5451288c7047eac1b586e0c51a62
|
7
|
+
data.tar.gz: dff2fa7ae30e790c5a4174597a5999852d30a0ddccba8ca2360872ee9389e8c41d6cd44109a1b8f74b940ffe87253776e6a01981e367927a8f43a0b2e6396014
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/README.md
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
# Sidekiq CloudWatch Metrics
|
2
2
|
|
3
|
-
[](https://travis-ci.org/sj26/sidekiq-cloudwatchmetrics)
|
4
|
-
|
5
3
|
Runs a thread inside your Sidekiq processes to report metrics to CloudWatch
|
6
4
|
useful for autoscaling and keeping an eye on your queues.
|
7
5
|
|
@@ -43,9 +41,14 @@ Sidekiq::CloudWatchMetrics.enable!(client: Aws::CloudWatch::Client.new)
|
|
43
41
|
The default namespace for metrics is "Sidekiq". You can configure this with the `namespace` option:
|
44
42
|
|
45
43
|
```ruby
|
46
|
-
Sidekiq::CloudWatchMetrics.enable!(
|
44
|
+
Sidekiq::CloudWatchMetrics.enable!(namespace: "Sidekiq-Staging")
|
47
45
|
```
|
48
46
|
|
47
|
+
Metrics are published every 60 seconds by default. You can adjust this with the `interval` option:
|
48
|
+
|
49
|
+
```ruby
|
50
|
+
Sidekiq::CloudWatchMetrics.enable!(interval: 30)
|
51
|
+
```
|
49
52
|
|
50
53
|
## Development
|
51
54
|
|
@@ -43,20 +43,21 @@ module Sidekiq::CloudWatchMetrics
|
|
43
43
|
include Sidekiq::Component
|
44
44
|
end
|
45
45
|
|
46
|
-
|
46
|
+
DEFAULT_INTERVAL = 60 # seconds
|
47
47
|
|
48
|
-
def initialize(config: Sidekiq, client: Aws::CloudWatch::Client.new, namespace: "Sidekiq", process_metrics: true, additional_dimensions: {})
|
48
|
+
def initialize(config: Sidekiq, client: Aws::CloudWatch::Client.new, namespace: "Sidekiq", process_metrics: true, additional_dimensions: {}, interval: DEFAULT_INTERVAL)
|
49
49
|
# Sidekiq 6.5+ requires @config, which defaults to the top-level
|
50
50
|
# `Sidekiq` module, but can be overridden when running multiple Sidekiqs.
|
51
51
|
@config = config
|
52
52
|
@client = client
|
53
|
+
@interval = interval
|
53
54
|
@namespace = namespace
|
54
55
|
@process_metrics = process_metrics
|
55
56
|
@additional_dimensions = additional_dimensions.map { |k, v| {name: k.to_s, value: v.to_s} }
|
56
57
|
end
|
57
58
|
|
58
59
|
def start
|
59
|
-
logger.
|
60
|
+
logger.debug { "Starting Sidekiq CloudWatch Metrics Publisher" }
|
60
61
|
|
61
62
|
@done = false
|
62
63
|
@thread = safe_thread("cloudwatch metrics publisher", &method(:run))
|
@@ -69,19 +70,24 @@ module Sidekiq::CloudWatchMetrics
|
|
69
70
|
def run
|
70
71
|
logger.info { "Started Sidekiq CloudWatch Metrics Publisher" }
|
71
72
|
|
72
|
-
# Publish stats every
|
73
|
+
# Publish stats every @interval seconds, sleeping as required between runs
|
73
74
|
now = Time.now.to_f
|
74
75
|
tick = now
|
75
76
|
until @stop
|
76
|
-
logger.
|
77
|
-
|
77
|
+
logger.debug { "Publishing Sidekiq CloudWatch Metrics" }
|
78
|
+
begin
|
79
|
+
publish
|
80
|
+
rescue => e
|
81
|
+
logger.error("Error publishing Sidekiq CloudWatch Metrics: #{e}")
|
82
|
+
handle_exception(e)
|
83
|
+
end
|
78
84
|
|
79
85
|
now = Time.now.to_f
|
80
|
-
tick = [tick +
|
86
|
+
tick = [tick + @interval, now].max
|
81
87
|
sleep(tick - now) if tick > now
|
82
88
|
end
|
83
89
|
|
84
|
-
logger.
|
90
|
+
logger.debug { "Stopped Sidekiq CloudWatch Metrics Publisher" }
|
85
91
|
end
|
86
92
|
|
87
93
|
def publish
|
@@ -169,12 +175,22 @@ module Sidekiq::CloudWatchMetrics
|
|
169
175
|
end.each do |(tag, tag_processes)|
|
170
176
|
next if tag.nil?
|
171
177
|
|
178
|
+
tag_dimensions = [{name: "Tag", value: tag}]
|
179
|
+
|
180
|
+
metrics << {
|
181
|
+
metric_name: "Capacity",
|
182
|
+
dimensions: tag_dimensions,
|
183
|
+
timestamp: now,
|
184
|
+
value: calculate_capacity(tag_processes),
|
185
|
+
unit: "Count",
|
186
|
+
}
|
187
|
+
|
172
188
|
tag_utilization = calculate_utilization(tag_processes) * 100.0
|
173
189
|
|
174
190
|
unless tag_utilization.nan?
|
175
191
|
metrics << {
|
176
192
|
metric_name: "Utilization",
|
177
|
-
dimensions:
|
193
|
+
dimensions: tag_dimensions,
|
178
194
|
timestamp: now,
|
179
195
|
value: tag_utilization,
|
180
196
|
unit: "Percent",
|
@@ -189,7 +205,7 @@ module Sidekiq::CloudWatchMetrics
|
|
189
205
|
unless process_utilization.nan?
|
190
206
|
process_dimensions = [{name: "Hostname", value: process["hostname"]}]
|
191
207
|
|
192
|
-
if process["tag"]
|
208
|
+
if process["tag"] && !process["tag"].to_s.empty?
|
193
209
|
process_dimensions << {name: "Tag", value: process["tag"]}
|
194
210
|
end
|
195
211
|
|
@@ -257,15 +273,17 @@ module Sidekiq::CloudWatchMetrics
|
|
257
273
|
end
|
258
274
|
|
259
275
|
def quiet
|
260
|
-
logger.
|
276
|
+
logger.debug { "Quieting Sidekiq CloudWatch Metrics Publisher" }
|
261
277
|
@stop = true
|
262
278
|
end
|
263
279
|
|
264
280
|
def stop
|
265
|
-
logger.
|
281
|
+
logger.debug { "Stopping Sidekiq CloudWatch Metrics Publisher" }
|
266
282
|
@stop = true
|
267
|
-
@thread
|
268
|
-
|
283
|
+
if @thread
|
284
|
+
@thread.wakeup
|
285
|
+
@thread.join
|
286
|
+
end
|
269
287
|
rescue ThreadError
|
270
288
|
# Don't raise if thread is already dead.
|
271
289
|
nil
|
data.tar.gz.sig
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
E�\���Ϭ�û}�6b�i�b%�͑/w_,����|Kf�����\�r����7ϒ�0q�yj �h�(��?�*R�dU���\��ޣUNf��:�}h������u&�y"� {SK�$��݁aL���xS/��v�Qx�Y��b֞� oʏ{�U}ݰ[���)�u�}%������@�TJ�wV.��]�p�߿kh����R�[Oe���V���v@oJuv��{����v��.ZT"�8�L���0��:o�
|
metadata
CHANGED
@@ -1,35 +1,34 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-cloudwatchmetrics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Cochran
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
13
|
+
MIIDKDCCAhCgAwIBAgIBAzANBgkqhkiG9w0BAQsFADA6MQ0wCwYDVQQDDARzajI2
|
14
14
|
MRQwEgYKCZImiZPyLGQBGRYEc2oyNjETMBEGCgmSJomT8ixkARkWA2NvbTAeFw0y
|
15
|
-
|
15
|
+
NDA3MjIwNjA3MjdaFw0yNTA3MjIwNjA3MjdaMDoxDTALBgNVBAMMBHNqMjYxFDAS
|
16
16
|
BgoJkiaJk/IsZAEZFgRzajI2MRMwEQYKCZImiZPyLGQBGRYDY29tMIIBIjANBgkq
|
17
17
|
hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsr60Eo/ttCk8GMTMFiPr3GoYMIMFvLak
|
18
18
|
xSmTk9YGCB6UiEePB4THSSA5w6IPyeaCF/nWkDp3/BAam0eZMWG1IzYQB23TqIM0
|
19
19
|
1xzcNRvFsn0aQoQ00k+sj+G83j3T5OOV5OZIlu8xAChMkQmiPd1NXc6uFv+Iacz7
|
20
20
|
kj+CMsI9YUFdNoU09QY0b+u+Rb6wDYdpyvN60YC30h0h1MeYbvYZJx/iZK4XY5zu
|
21
21
|
4O/FL2ChjL2CPCpLZW55ShYyrzphWJwLOJe+FJ/ZBl6YXwrzQM9HKnt4titSNvyU
|
22
|
-
KzE3L63A3PZvExzLrN9u09kuWLLJfXB2sGOlw3n9t72rJiuBr3/
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
LDvy9dfwMMOdIZi75Q8SBBib84AuwhMHIlUv9FcHhh3dXsDDYkrVrpUAwCsG6yCm
|
22
|
+
KzE3L63A3PZvExzLrN9u09kuWLLJfXB2sGOlw3n9t72rJiuBr3/OQQIDAQABozkw
|
23
|
+
NzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU99dfRjEKFyczTeIz
|
24
|
+
m3ZsDWrNC80wDQYJKoZIhvcNAQELBQADggEBAKcQ+MfpXXDmqboG36O8mXhJZJ8+
|
25
|
+
zlUqM1QnoEG8XpH/29py4GzSgs6Sb+v/Z1SEArRDq0r1bKZuWiWxqEDnmSE94+pe
|
26
|
+
A0Ct6Pv/paEhQCoPkGQNa74cH4tzkVHIA7WSwRL8wOz5vo++YBKH5H36nNqtLV7s
|
27
|
+
kNJYsbeOL/w2icQ4b0w4KYgcs4bd6yrYdgcgsRd2sCYb2XFHjczYqw4iEwuUenNM
|
28
|
+
G8WXc9zUMVewWkEjS9s++xFNb/7f4dFNXCoE3pgHjzctt7gYcJVacprsg925LYHO
|
29
|
+
WsbnbEow7BPlYOZm3rDIsEYpWqxN0lR8BakO2ToJ5RAHXahFu4K4eJtAsLk=
|
31
30
|
-----END CERTIFICATE-----
|
32
|
-
date:
|
31
|
+
date: 2025-02-24 00:00:00.000000000 Z
|
33
32
|
dependencies:
|
34
33
|
- !ruby/object:Gem::Dependency
|
35
34
|
name: sidekiq
|
@@ -152,7 +151,7 @@ homepage: https://github.com/sj26/sidekiq-cloudwatchmetrics
|
|
152
151
|
licenses:
|
153
152
|
- MIT
|
154
153
|
metadata: {}
|
155
|
-
post_install_message:
|
154
|
+
post_install_message:
|
156
155
|
rdoc_options: []
|
157
156
|
require_paths:
|
158
157
|
- lib
|
@@ -160,15 +159,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
160
159
|
requirements:
|
161
160
|
- - ">="
|
162
161
|
- !ruby/object:Gem::Version
|
163
|
-
version: '2.
|
162
|
+
version: '2.7'
|
164
163
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
164
|
requirements:
|
166
165
|
- - ">="
|
167
166
|
- !ruby/object:Gem::Version
|
168
167
|
version: '0'
|
169
168
|
requirements: []
|
170
|
-
rubygems_version: 3.
|
171
|
-
signing_key:
|
169
|
+
rubygems_version: 3.5.16
|
170
|
+
signing_key:
|
172
171
|
specification_version: 4
|
173
172
|
summary: Publish Sidekiq metrics to AWS CloudWatch
|
174
173
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|