sidekiq-cloudwatchmetrics 2.3.1 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/sidekiq/cloudwatchmetrics.rb +33 -19
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +1 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a7b965ddae391fa045355a90b73aab7f57bdbde6447f9126fc0d7d4736c74bc
|
4
|
+
data.tar.gz: ceb4ed049aa4c2e52bf813e14ed9b3a3763f470fc9205f40d6a5221b35a16bb9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82c7cb6ea74a0df7a1e21fbf5961c05dce7129179327e9a5b50568923766ac99e747bb10a45f950ad5b1266930c3f7c3e6a02d90cc370343dc301934dd3d5436
|
7
|
+
data.tar.gz: a988deae4a7d902c291e6c6ee258459d3864d5da2672b685b783ab93b8e0140a0f54d26a51f75bcbc07b2e66a6962baf22c92659a3d10558432c56ae1287af17
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -45,12 +45,13 @@ module Sidekiq::CloudWatchMetrics
|
|
45
45
|
|
46
46
|
INTERVAL = 60 # seconds
|
47
47
|
|
48
|
-
def initialize(config: Sidekiq, client: Aws::CloudWatch::Client.new, namespace: "Sidekiq", additional_dimensions: {})
|
48
|
+
def initialize(config: Sidekiq, client: Aws::CloudWatch::Client.new, namespace: "Sidekiq", process_metrics: true, additional_dimensions: {})
|
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
53
|
@namespace = namespace
|
54
|
+
@process_metrics = process_metrics
|
54
55
|
@additional_dimensions = additional_dimensions.map { |k, v| {name: k.to_s, value: v.to_s} }
|
55
56
|
end
|
56
57
|
|
@@ -150,32 +151,41 @@ module Sidekiq::CloudWatchMetrics
|
|
150
151
|
value: calculate_capacity(processes),
|
151
152
|
unit: "Count",
|
152
153
|
},
|
153
|
-
{
|
154
|
-
metric_name: "Utilization",
|
155
|
-
timestamp: now,
|
156
|
-
value: calculate_utilization(processes) * 100.0,
|
157
|
-
unit: "Percent",
|
158
|
-
},
|
159
154
|
]
|
160
155
|
|
161
|
-
processes
|
162
|
-
metrics << {
|
163
|
-
metric_name: "Utilization",
|
164
|
-
dimensions: [{name: "Hostname", value: process["hostname"]}],
|
165
|
-
timestamp: now,
|
166
|
-
value: process["busy"] / process["concurrency"].to_f * 100.0,
|
167
|
-
unit: "Percent",
|
168
|
-
}
|
156
|
+
utilization = calculate_utilization(processes) * 100.0
|
169
157
|
|
158
|
+
unless utilization.nan?
|
170
159
|
metrics << {
|
171
160
|
metric_name: "Utilization",
|
172
|
-
dimensions: [{name: "Tag", value: process["tag"]}],
|
173
161
|
timestamp: now,
|
174
|
-
value:
|
162
|
+
value: utilization,
|
175
163
|
unit: "Percent",
|
176
164
|
}
|
177
165
|
end
|
178
166
|
|
167
|
+
if @process_metrics
|
168
|
+
processes.each do |process|
|
169
|
+
process_utilization = process["busy"] / process["concurrency"].to_f * 100.0
|
170
|
+
|
171
|
+
unless process_utilization.nan?
|
172
|
+
process_dimensions = [{name: "Hostname", value: process["hostname"]}]
|
173
|
+
|
174
|
+
if process["tag"]
|
175
|
+
process_dimensions << {name: "Tag", value: process["tag"]}
|
176
|
+
end
|
177
|
+
|
178
|
+
metrics << {
|
179
|
+
metric_name: "Utilization",
|
180
|
+
dimensions: process_dimensions,
|
181
|
+
timestamp: now,
|
182
|
+
value: process_utilization,
|
183
|
+
unit: "Percent",
|
184
|
+
}
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
179
189
|
queues.each do |(queue_name, queue_size)|
|
180
190
|
metrics << {
|
181
191
|
metric_name: "QueueSize",
|
@@ -201,6 +211,7 @@ module Sidekiq::CloudWatchMetrics
|
|
201
211
|
metric[:dimensions] = (metric[:dimensions] || []) + @additional_dimensions
|
202
212
|
end
|
203
213
|
end
|
214
|
+
|
204
215
|
# We can only put 20 metrics at a time
|
205
216
|
metrics.each_slice(20) do |some_metrics|
|
206
217
|
@client.put_metric_data(
|
@@ -218,10 +229,13 @@ module Sidekiq::CloudWatchMetrics
|
|
218
229
|
end
|
219
230
|
|
220
231
|
# Returns busy / concurrency averaged across processes (for scaling)
|
232
|
+
# Avoid considering processes not yet running any threads
|
221
233
|
private def calculate_utilization(processes)
|
222
|
-
processes.map do |process|
|
234
|
+
process_utilizations = processes.map do |process|
|
223
235
|
process["busy"] / process["concurrency"].to_f
|
224
|
-
end.
|
236
|
+
end.reject(&:nan?)
|
237
|
+
|
238
|
+
process_utilizations.sum / process_utilizations.size.to_f
|
225
239
|
end
|
226
240
|
|
227
241
|
def quiet
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-cloudwatchmetrics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Samuel Cochran
|
@@ -29,7 +29,7 @@ cert_chain:
|
|
29
29
|
AAMioxgB6J5QhXQ42OSWIzwHZIbSv3DV9Lf5sde50HIW5f9u5jn29TUGDhSWYKkh
|
30
30
|
LDvy9dfwMMOdIZi75Q8SBBib84AuwhMHIlUv9FcHhh3dXsDDYkrVrpUAwCsG6yCm
|
31
31
|
-----END CERTIFICATE-----
|
32
|
-
date: 2023-
|
32
|
+
date: 2023-03-07 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: sidekiq
|
metadata.gz.sig
CHANGED