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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: db3700f67618740e59e5d6b238c8ef38df7fff355b55720cbd8a3e3d8ddc4fe0
4
- data.tar.gz: cc370653cf4e03aa2eef772b60063567409f10eeeedd90a4e24bfb67a445f951
3
+ metadata.gz: 894ace11258aeb70fd06f4201fb84f493406199eb4bce1c97cd0c2627e69c9fa
4
+ data.tar.gz: c88fde8c0c0564f6036c1bc0e08ea14b0b02a89fb20026adca88c400b3bc08a8
5
5
  SHA512:
6
- metadata.gz: f6481c3015ff0d156677856c0851f34a35fad57718b9d493d096d38017b902ef12429f18a5e557fd6b1f1b5a0e32df6a7b805dea042a6620528aea76b42c72ec
7
- data.tar.gz: f9b6755f2c04741b1704825d6a3a0b9950ea609da9784a77a622a9b99562857c0c81d9cada121ce8c05b148e0096c47e26be7036a05c5c864592b6749e80078f
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
- [![Build Status](https://travis-ci.org/sj26/sidekiq-cloudwatchmetrics.svg)](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!(client: Aws::CloudWatch::Client.new, namespace: "Sidekiq-Staging")
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
- INTERVAL = 60 # seconds
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 INTERVAL seconds, sleeping as required between runs
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
- publish
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 + INTERVAL, now].max
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: [{name: "Tag", value: tag}],
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.wakeup
268
- @thread.join
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
- =�z�"�Sa,F����.��>���:�|����X�k���R�
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�QxY��b֞� oʏ{�U}ݰ[���)�u�}% ������@�TJ�wV.��]�p�߿kh����R�[Oe���V���v@oJuv��{ ����v��.ZT"�8L�� �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.6.0
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
- MIIDKDCCAhCgAwIBAgIBAjANBgkqhkiG9w0BAQsFADA6MQ0wCwYDVQQDDARzajI2
13
+ MIIDKDCCAhCgAwIBAgIBAzANBgkqhkiG9w0BAQsFADA6MQ0wCwYDVQQDDARzajI2
14
14
  MRQwEgYKCZImiZPyLGQBGRYEc2oyNjETMBEGCgmSJomT8ixkARkWA2NvbTAeFw0y
15
- MzA3MTIwODU1NTFaFw0yNDA3MTEwODU1NTFaMDoxDTALBgNVBAMMBHNqMjYxFDAS
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
- m3ZsDWrNC80wDQYJKoZIhvcNAQELBQADggEBAHplXTmXnsLZKl6th6Twlbpl3iBl
25
- 7aRpOrLc7g8WIEirjiWlYZXjhdG6XoiIQAQtV3XniQ6npRPw7Np8AhSR1LOlvbOs
26
- hEdArvs/OZy9cN7fQNduZFK1dkbYCF4waBTycsQFvrzcJzRmjhS9BJd0rroetldo
27
- nmPzAzlAl9rIOQC/c763FVfdbPQu+mxcj4JCfVElUzxK+4igyB6SFMckMPSZIJbi
28
- cxvXzM34LVue8vISlf/2VKpawD3kQinfo1I53MP3Hv3EihDc4p14E4hdAILtHd5r
29
- k6d9rkvRe0/YFTLB1hzK6scdAUcD91NOylY8s4cypQv/mk+OTbQ9+Xy7tyU=
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: 2023-07-29 00:00:00.000000000 Z
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.4'
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.1.6
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