sidekiq-cloudwatchmetrics 2.6.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 +27 -9
- data.tar.gz.sig +1 -3
- metadata +15 -15
- 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,13 +43,14 @@ 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} }
|
@@ -69,15 +70,20 @@ 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
77
|
logger.debug { "Publishing Sidekiq CloudWatch Metrics" }
|
77
|
-
|
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
|
|
@@ -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
|
|
@@ -264,8 +280,10 @@ module Sidekiq::CloudWatchMetrics
|
|
264
280
|
def stop
|
265
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,3 +1 @@
|
|
1
|
-
|
2
|
-
�g�۩��ۮ����z�ɂ�"N��7����K�'c�kW5�ض�\���F�?��noL���=1��v�����a��\
|
3
|
-
�V��.U�xܔ]�jjL�NV�U#��B�W�P�f��Ey�s�W�\�_]0��;im8�
|
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,18 +1,18 @@
|
|
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
|
@@ -21,14 +21,14 @@ cert_chain:
|
|
21
21
|
4O/FL2ChjL2CPCpLZW55ShYyrzphWJwLOJe+FJ/ZBl6YXwrzQM9HKnt4titSNvyU
|
22
22
|
KzE3L63A3PZvExzLrN9u09kuWLLJfXB2sGOlw3n9t72rJiuBr3/OQQIDAQABozkw
|
23
23
|
NzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQU99dfRjEKFyczTeIz
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
24
|
+
m3ZsDWrNC80wDQYJKoZIhvcNAQELBQADggEBAKcQ+MfpXXDmqboG36O8mXhJZJ8+
|
25
|
+
zlUqM1QnoEG8XpH/29py4GzSgs6Sb+v/Z1SEArRDq0r1bKZuWiWxqEDnmSE94+pe
|
26
|
+
A0Ct6Pv/paEhQCoPkGQNa74cH4tzkVHIA7WSwRL8wOz5vo++YBKH5H36nNqtLV7s
|
27
|
+
kNJYsbeOL/w2icQ4b0w4KYgcs4bd6yrYdgcgsRd2sCYb2XFHjczYqw4iEwuUenNM
|
28
|
+
G8WXc9zUMVewWkEjS9s++xFNb/7f4dFNXCoE3pgHjzctt7gYcJVacprsg925LYHO
|
29
|
+
WsbnbEow7BPlYOZm3rDIsEYpWqxN0lR8BakO2ToJ5RAHXahFu4K4eJtAsLk=
|
30
30
|
-----END CERTIFICATE-----
|
31
|
-
date:
|
31
|
+
date: 2025-02-24 00:00:00.000000000 Z
|
32
32
|
dependencies:
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: sidekiq
|
@@ -151,7 +151,7 @@ homepage: https://github.com/sj26/sidekiq-cloudwatchmetrics
|
|
151
151
|
licenses:
|
152
152
|
- MIT
|
153
153
|
metadata: {}
|
154
|
-
post_install_message:
|
154
|
+
post_install_message:
|
155
155
|
rdoc_options: []
|
156
156
|
require_paths:
|
157
157
|
- lib
|
@@ -159,15 +159,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
159
159
|
requirements:
|
160
160
|
- - ">="
|
161
161
|
- !ruby/object:Gem::Version
|
162
|
-
version: '2.
|
162
|
+
version: '2.7'
|
163
163
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
164
|
requirements:
|
165
165
|
- - ">="
|
166
166
|
- !ruby/object:Gem::Version
|
167
167
|
version: '0'
|
168
168
|
requirements: []
|
169
|
-
rubygems_version: 3.
|
170
|
-
signing_key:
|
169
|
+
rubygems_version: 3.5.16
|
170
|
+
signing_key:
|
171
171
|
specification_version: 4
|
172
172
|
summary: Publish Sidekiq metrics to AWS CloudWatch
|
173
173
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|