sensu-plugins-azurerm 2.0.0 → 2.1.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
- SHA256:
3
- metadata.gz: 031b76d776d3302c32c3b0f6f5f1553e2f3afd153f509506bbd7806b961efdd4
4
- data.tar.gz: b112f955b57c08a445d905a5b1c519f2e4078803b45e95ca4d28ec2f0f0d4fe5
2
+ SHA1:
3
+ metadata.gz: 96fa1b12331ae15cfa86f91e425fc0d0e39620aa
4
+ data.tar.gz: a273702f89fce82e5da3935733a5846ffb0fcf88
5
5
  SHA512:
6
- metadata.gz: dc7068537d941dc3826f161fc68c9e432030a8608d233114bc38dd983c00fbdefd8edd95b59d1c86faa501d142817176b0224655f2491555520def259d4d9a70
7
- data.tar.gz: 34c084b5bab53e29995c490d6e2bf0a4a1694cfa473d2c925312d5a628733bbe3b90c2a766ce2403127480abcf4bffc523c1e29b0e633c6c1dcb195e44b3adff
6
+ metadata.gz: f3a3cf2e72024c75fd8b9ea5cc267fb8bfcfa357136d339511db1bded33ac94cd5b7f8e8666547be881ea8383a885a836ebc3a9a070c92d9b37bd1cba61f6b50
7
+ data.tar.gz: 0c775f58b4d655b1096f7fe8b7bc715722fb6744f74ce83d2596eb28c058de521be243ac44a362c92c4f014a8a87ccf2faa4c4f5c0ebce4e9e28817834c5bbc8
data/CHANGELOG.md CHANGED
@@ -5,6 +5,13 @@ This CHANGELOG follows the format located [here](https://github.com/sensu-plugin
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [2.1.0] - 2018-09-10
9
+ ### Added
10
+ - check-azurerm-monitor-metric.rb: allows you to check against azure metric thresholds for a particular resource id or name (@thomaslitton)
11
+
12
+ ### Changed
13
+ - updated `.gemspec` to reflect new url after transfer (@majormoses)
14
+
8
15
  ## [2.0.0] - 2017-12-11
9
16
  ### Security
10
17
  - updated rubocop dependency to `~> 0.51.0` per: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-8418. (@majormoses)
@@ -77,7 +84,8 @@ This CHANGELOG follows the format located [here](https://github.com/sensu-plugin
77
84
  ### Added
78
85
  - initial release
79
86
 
80
- [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-azurerm/compare/2.0.0..HEAD
87
+ [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-azurerm/compare/2.1.0..HEAD
88
+ [2.1.0]: https://github.com/sensu-plugins/sensu-plugins-azurerm/compare/2.0.0...2.1.0
81
89
  [2.0.0]: https://github.com/sensu-plugins/sensu-plugins-azurerm/compare/1.0.0..2.0.0
82
90
  [1.0.0]: https://github.com/sensu-plugins/sensu-plugins-azurerm/compare/0.0.5...1.0.0
83
91
  [0.0.5]: https://github.com/sensu-plugins/sensu-plugins-azurerm/compare/0.0.4...0.0.5
data/README.md CHANGED
@@ -26,6 +26,7 @@
26
26
  - check-azurerm-virtual-network-gateway-connected.rb
27
27
  - check-azurerm-virtual-network-gateway-failover-connected.rb
28
28
  - check-azurerm-virtual-networks-usage.rb
29
+ - check-azurerm-monitor-metric.rb
29
30
  - metric-azurerm-service-bus-subscription-message-count.rb
30
31
  - metric-azurerm-virtual-network-gateway-usage.rb
31
32
 
@@ -51,6 +52,7 @@
51
52
  * /bin/check-azurerm-virtual-networks-usage.rb
52
53
  * /bin/metric-azurerm-service-bus-subscription-message-count.rb
53
54
  * /bin/metric-azurerm-virtual-network-gateway-usage.rb
55
+ * /bin/check-azurerm-monitor-metric.rb
54
56
 
55
57
 
56
58
  ## Usage
@@ -428,6 +430,24 @@
428
430
  -critical_percentage 90
429
431
  ```
430
432
 
433
+ **check-azurerm-monitor-metric.rb**
434
+ ```
435
+ ./check-azurerm-monitor-metric.rb --use-assigned-identity
436
+ --resource-id "id"
437
+ --metric "metricname"
438
+ --warning 80
439
+ --critical 90
440
+
441
+ ./check-azurerm-monitor-metric.rb --tenant "00000000-0000-0000-0000-000000000000"
442
+ --client "00000000-0000-0000-0000-000000000000"
443
+ --clientSecret "00000000-0000-0000-0000-000000000000"
444
+ --resource-id "id"
445
+ --metric "metricname"
446
+ --warning-under 80
447
+ --critical-under 50
448
+
449
+ ```
450
+
431
451
  **metric-azurerm-service-bus-subscription-message-count.rb**
432
452
  ```
433
453
  ./metric-azurerm-service-bus-subscription-message-count.rb
@@ -0,0 +1,356 @@
1
+ #! /usr/bin/env ruby
2
+ #
3
+ # check-azurerm-core-usage
4
+ #
5
+ # DESCRIPTION:
6
+ # Checks an azure monitor metric against thresholds
7
+ #
8
+ # OUTPUT:
9
+ # plain-text
10
+ #
11
+ # PLATFORMS:
12
+ # Linux
13
+ # Windows
14
+ #
15
+ # DEPENDENCIES:
16
+ # gem: ms_rest_azure
17
+ # gem: sensu-plugin
18
+ #
19
+ #
20
+
21
+ require 'ms_rest_azure'
22
+ require 'erb'
23
+
24
+ require 'sensu-plugin/check/cli'
25
+ require 'sensu-plugins-azurerm'
26
+
27
+ require 'time'
28
+ require 'net/http'
29
+
30
+ class CheckAzurermMonitorMetric < Sensu::Plugin::Check::CLI
31
+ include SensuPluginsAzureRM
32
+
33
+ AZURE_API_VER = '2017-05-01-preview'.freeze
34
+ DATE_FORMAT = '%Y-%m-%dT%H:%M:%S'.freeze
35
+
36
+ option :tenant_id,
37
+ description: 'ARM Tenant ID. Either set ENV[\'ARM_TENANT_ID\'] or provide it as an option',
38
+ short: '-t ID',
39
+ long: '--tenant ID',
40
+ default: ENV['ARM_TENANT_ID']
41
+
42
+ option :client_id,
43
+ description: 'ARM Client ID. Either set ENV[\'ARM_CLIENT_ID\'] or provide it as an option',
44
+ short: '-i ID',
45
+ long: '--client ID',
46
+ default: ENV['ARM_CLIENT_ID']
47
+
48
+ option :client_secret,
49
+ description: 'ARM Client Secret. Either set ENV[\'ARM_CLIENT_SECRET\'] or provide it as an option',
50
+ short: '-s SECRET',
51
+ long: '--clientSecret SECRET',
52
+ default: ENV['ARM_CLIENT_SECRET']
53
+
54
+ option :use_assigned_identity,
55
+ description: 'Use Managed Service Identity (MSI) for authentication.',
56
+ short: '-l',
57
+ long: '--use-assigned-identity',
58
+ boolean: true,
59
+ default: false
60
+
61
+ option :local_auth_port,
62
+ description: 'Port used to authenticate when using the local identity via Managed Service Identity (MSI)',
63
+ short: '-o PORT',
64
+ long: '--local-auth-port PORT',
65
+ proc: proc(&:to_i),
66
+ default: 50_342
67
+
68
+ option :assigned_identity_resource,
69
+ description: 'The resource to use when retrieving credentials. Only used if the --use-assigned-identity option is used.',
70
+ short: '-u RESOURCE_URL',
71
+ long: '--assigned-identity-resource',
72
+ default: 'https://management.azure.com/'
73
+
74
+ option :subscription_id,
75
+ description: 'ARM Subscription ID',
76
+ short: '-S ID',
77
+ long: '--subscription ID',
78
+ default: ENV['ARM_SUBSCRIPTION_ID']
79
+
80
+ option :resource_name,
81
+ description: 'The name of the resource. If given, the resource namespace/type/group along with subscription id are also required.',
82
+ short: '-e NAME',
83
+ long: '--resource-name NAME',
84
+ default: ''
85
+
86
+ option :resource_type,
87
+ description: 'Resource Type. If specified, the resource should contain the name and not the full id, and the ' \
88
+ 'resource namespace/group and subscriptions are also required. Note: This should not contain the ' \
89
+ 'namespace. Use --resource-namespace instead.',
90
+ short: '-y NAME',
91
+ long: '--resource-type NAME',
92
+ default: ''
93
+
94
+ option :resource_namespace,
95
+ description: 'Resource Namespace. If specified, the resource should contain the name and not the full id, and the resource namespace/group and subscriptions are also required.',
96
+ short: '-n NAME',
97
+ long: '--resource-namespace NAME',
98
+ default: ''
99
+
100
+ option :resource_group,
101
+ description: 'Resource Group. If specified, the resource should contain the name and not the full id, and the resource namespace/group and subscriptions are also required.',
102
+ short: '-g NAME',
103
+ long: '--resource-group NAME',
104
+ default: ''
105
+
106
+ option :resource_parent,
107
+ description: 'Resource Parent.',
108
+ short: '-p NAME',
109
+ long: '--resource-parent NAME',
110
+ default: ''
111
+
112
+ # example id: /subscriptions/576b7196-d42b-4b63-b696-af3ff33269a7/resourceGroups/test-group-1/providers/Microsoft.Network/virtualNetworkGateways/test-gateway
113
+ option :resource_id,
114
+ description: 'The full id of the resource. If given, the resource namespace/type/group along with subscription id are ignored.',
115
+ short: '-r ID',
116
+ long: '--resource-id ID',
117
+ default: ''
118
+
119
+ option :metric,
120
+ description: 'The name of the metric',
121
+ short: '-m ID',
122
+ long: '--metric ID',
123
+ required: true
124
+
125
+ option :filter,
126
+ description: "The filter applied to the metric. See Azure docs for the syntax. Note: This can be used to segment the return by dimensions, so that the script checks each dimension separately. eg APIName eq '*'",
127
+ short: '-f FILTER',
128
+ long: '--filter FILTER'
129
+
130
+ option :aggregation,
131
+ description: 'Aggregation. This can be Average, Count, Maximum, Minimum, Total',
132
+ short: '-a aggregation',
133
+ long: '--aggregation aggregation',
134
+ default: 'average'
135
+
136
+ option :warning_over,
137
+ description: 'The warning threshold to check if the metric is forecasted to go over.',
138
+ short: '-w N',
139
+ long: '--warning WARN',
140
+ proc: proc { |val| val.to_i }
141
+
142
+ option :critical_over,
143
+ description: 'The critical threshold to check if the metric is forecasted to go over.',
144
+ short: '-c N',
145
+ long: '--critical CRIT',
146
+ proc: proc { |val| val.to_i }
147
+
148
+ option :warning_under,
149
+ description: 'The warning threshold to check if the metric is forecasted to go under.',
150
+ short: '-W N',
151
+ long: '--warning-under WARN',
152
+ proc: proc { |val| val.to_i }
153
+
154
+ option :critical_under,
155
+ description: 'The critical threshold to check if the metric is forecasted to go under.',
156
+ short: '-C N',
157
+ long: '--critical-under CRIT',
158
+ proc: proc { |val| val.to_i }
159
+
160
+ option :base_url,
161
+ description: 'The Azure resource API URL.',
162
+ short: '-b URL',
163
+ long: '--base-url URL',
164
+ default: 'https://management.azure.com',
165
+ proc: proc { |val| val.chomp('/') }
166
+
167
+ option :lookback_period,
168
+ description: 'The amount of time (in seconds) from the current time to look back when retrieving the metric. This should be long enough to capture the last value submitted.',
169
+ short: '-k PERIOD',
170
+ long: '--look-back-period PERIOD',
171
+ default: 600, # 10 min. This should generally be enough time to capture the last value, without wasting API credits
172
+ proc: proc { |val| val.to_i }
173
+
174
+ def run
175
+ check_missing_resource_info
176
+
177
+ if !config[:critical_over] && !config[:warning_over] && !config[:critical_under] && !config[:warning_under]
178
+ unknown 'At least one threshold must be provided.'
179
+ end
180
+
181
+ if last_metric_values.empty?
182
+ unknown "There are no metric values for #{config[:metric]} on resource #{config[:resource_id] || config[:resource_name]} with aggregation #{config[:aggregation]}"
183
+ else
184
+ critical_messages = []
185
+ warning_messages = []
186
+
187
+ last_metric_values.each do |metric_val|
188
+ if config[:critical_over] && metric_val[:value] > config[:critical_over].to_f
189
+ critical_messages << "Metric #{metric_val[:metric_name]} is #{metric_val[:value]}"
190
+ elsif config[:warning_over] && metric_val[:value] > config[:warning_over].to_f
191
+ warning_messages << "Metric #{metric_val[:metric_name]} is #{metric_val[:value]}"
192
+ elsif config[:critical_under] && metric_val[:value] < config[:critical_under].to_f
193
+ critical_messages << "Metric #{metric_val[:metric_name]} is #{metric_val[:value]}"
194
+ elsif config[:warning_under] && metric_val[:value] < config[:warning_under].to_f
195
+ warning_messages << "Metric #{metric_val[:metric_name]} is #{metric_val[:value]}"
196
+ end
197
+ end
198
+
199
+ if !critical_messages.empty?
200
+ critical critical_messages.join("\n")
201
+ elsif !warning_messages.empty?
202
+ warning warning_messages.join("\n")
203
+ else
204
+ ok 'Metric(s) are within thresholds'
205
+ end
206
+ end
207
+ end
208
+
209
+ def check_missing_resource_info
210
+ return_missing_resource if missing_resource_id? && missing_resource_name_info?
211
+ end
212
+
213
+ def missing_resource_id?
214
+ config[:resource_id].to_s.empty?
215
+ end
216
+
217
+ def missing_resource_name_info?
218
+ config[:resource_name].to_s.empty? ||
219
+ config[:resource_type].to_s.empty? ||
220
+ config[:resource_namespace].to_s.empty? ||
221
+ config[:resource_group].to_s.empty? ||
222
+ config[:subscription_id].to_s.empty?
223
+ end
224
+
225
+ def return_missing_resource
226
+ unknown(
227
+ "Either the resource id is required OR the resource name, resource group, resource namepsace, resource type and subscription id are required.\n"\
228
+ "Resource id: #{config[:resource_id]}\n"\
229
+ "Resource Info:\n"\
230
+ "Name: #{config[:resource_name]}\n"\
231
+ "Group: #{config[:resource_group]}\n"\
232
+ "Namespace: #{config[:resource_namespace]}\n"\
233
+ "Type: #{config[:resource_type]}\n"\
234
+ "Subscription ID: #{config[:subscription_id]}"
235
+ )
236
+ end
237
+
238
+ def last_metric_values
239
+ @last_metric_values ||= find_last_metric_values
240
+ end
241
+
242
+ def find_last_metric_values
243
+ values = []
244
+ metric_response[:value].each do |metric_resp_value|
245
+ name = metric_resp_value[:name] ? metric_resp_value[:name][:value] : ''
246
+
247
+ next if metric_resp_value[:timeseries].empty?
248
+
249
+ metric_resp_value[:timeseries].each do |ts|
250
+ ts[:data].reverse_each do |metric_value|
251
+ if metric_value[metric_value_key]
252
+ values << {
253
+ value: metric_value[metric_value_key].to_f,
254
+ metric_name: name
255
+ }
256
+
257
+ break
258
+ end
259
+ end
260
+ end
261
+ end
262
+
263
+ values
264
+ end
265
+
266
+ def metric_value_key
267
+ config[:aggregation].to_sym
268
+ end
269
+
270
+ def metric_response
271
+ auth_header = if config[:use_assigned_identity]
272
+ uri = URI.parse("http://localhost:#{config[:local_auth_port]}/oauth2/token?resource=#{config[:assigned_identity_resource]}")
273
+
274
+ res = Net::HTTP.start(uri.host, uri.port, use_ssl: false) do |http|
275
+ req = Net::HTTP::Get.new(uri)
276
+ req['Metadata'] = 'true'
277
+ http.request(req)
278
+ end
279
+
280
+ handle_response(res)
281
+
282
+ auth_resp = JSON.parse(res.body, symbolize_names: true)
283
+
284
+ "#{auth_resp[:token_type]} #{auth_resp[:access_token]}"
285
+ else
286
+ provider = MsRestAzure::ApplicationTokenProvider.new(
287
+ config[:tenant_id],
288
+ config[:client_id],
289
+ config[:client_secret]
290
+ )
291
+
292
+ provider.get_authentication_header
293
+ end
294
+
295
+ begin
296
+ url = "#{config[:base_url]}#{resource}/providers/microsoft.insights/metrics?" \
297
+ "api-version=#{AZURE_API_VER}&" \
298
+ "metric=#{config[:metric]}&" \
299
+ "timespan=#{CGI.escape(timespan)}&" \
300
+ "aggregation=#{config[:aggregation]}"
301
+
302
+ url += "&$filter=#{CGI.escape(config[:filter])}" if config[:filter]
303
+
304
+ uri = URI.parse(url)
305
+
306
+ res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
307
+ req = Net::HTTP::Get.new(uri)
308
+ req['Authorization'] = auth_header
309
+ req['Content-Type'] = 'application/json'
310
+ http.request(req)
311
+ end
312
+ rescue Timeout::Error,
313
+ Errno::EINVAL, Errno::ECONNRESET,
314
+ EOFError, Net::HTTPBadResponse,
315
+ Net::HTTPHeaderSyntaxError, Net::ProtocolError,
316
+ Errno::ECONNREFUSED => e
317
+
318
+ critical e
319
+ end
320
+
321
+ handle_response(res)
322
+
323
+ JSON.parse(res.body, symbolize_names: true)
324
+ end
325
+
326
+ def resource
327
+ @resource ||= build_resource
328
+ end
329
+
330
+ def build_resource
331
+ if !config[:resource_id].to_s.empty?
332
+ config[:resource_id].start_with?('/') ? config[:resource_id] : '/' + config[:resource_id]
333
+ else
334
+ "/subscriptions/#{config[:subscription_id]}/resourceGroups/#{config[:resource_group]}/" \
335
+ "providers/#{resource_type}/#{config[:resource_name]}"
336
+ end
337
+ end
338
+
339
+ def resource_type
340
+ if config[:resource_parent].to_s.empty?
341
+ "#{config[:resource_namespace]}/#{config[:resource_type]}"
342
+ else
343
+ "#{config[:resource_namespace]}/#{config[:resource_parent]}/#{config[:resource_type]}"
344
+ end
345
+ end
346
+
347
+ def timespan
348
+ start_date = Time.now.utc - config[:lookback_period]
349
+ end_date = Time.now.utc
350
+ "#{start_date.strftime(DATE_FORMAT)}/#{end_date.strftime(DATE_FORMAT)}"
351
+ end
352
+
353
+ def handle_response(res)
354
+ critical "Failed to get metric:\n#{res.body}" if res.code.to_i >= 300
355
+ end
356
+ end
@@ -1,7 +1,7 @@
1
1
  module SensuPluginsAzureRM
2
2
  module Version
3
3
  MAJOR = 2
4
- MINOR = 0
4
+ MINOR = 1
5
5
  PATCH = 0
6
6
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-azurerm
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Harvey
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-11 00:00:00.000000000 Z
11
+ date: 2018-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: azure_mgmt_compute
@@ -198,6 +198,20 @@ dependencies:
198
198
  - - "~>"
199
199
  - !ruby/object:Gem::Version
200
200
  version: '10.5'
201
+ - !ruby/object:Gem::Dependency
202
+ name: rdoc
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - "~>"
206
+ - !ruby/object:Gem::Version
207
+ version: '5.1'
208
+ type: :development
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - "~>"
213
+ - !ruby/object:Gem::Version
214
+ version: '5.1'
201
215
  - !ruby/object:Gem::Dependency
202
216
  name: redcarpet
203
217
  requirement: !ruby/object:Gem::Requirement
@@ -268,6 +282,20 @@ dependencies:
268
282
  - - "~>"
269
283
  - !ruby/object:Gem::Version
270
284
  version: '1.6'
285
+ - !ruby/object:Gem::Dependency
286
+ name: webmock
287
+ requirement: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - "~>"
290
+ - !ruby/object:Gem::Version
291
+ version: '3.1'
292
+ type: :development
293
+ prerelease: false
294
+ version_requirements: !ruby/object:Gem::Requirement
295
+ requirements:
296
+ - - "~>"
297
+ - !ruby/object:Gem::Version
298
+ version: '3.1'
271
299
  - !ruby/object:Gem::Dependency
272
300
  name: yard
273
301
  requirement: !ruby/object:Gem::Requirement
@@ -285,27 +313,28 @@ dependencies:
285
313
  description: This plugin provides checks for Microsoft Azure's Resource Manager service.
286
314
  email: "<github@ibuildstuff.co.uk>"
287
315
  executables:
288
- - check-azurerm-static-public-ip-addresses-usage.rb
316
+ - check-azurerm-network-security-groups-usage.rb
289
317
  - check-azurerm-cores-ds-usage.rb
290
- - check-azurerm-service-bus-subscription.rb
291
- - check-azurerm-load-balancers-usage.rb
292
- - check-azurerm-network-interfaces-usage.rb
318
+ - check-azurerm-virtual-network-gateway-connected.rb
293
319
  - check-azurerm-route-tables-usage.rb
294
- - check-azurerm-cores-d-usage.rb
320
+ - check-azurerm-cores-dsv2-usage.rb
321
+ - metric-azurerm-service-bus-subscription-message-count.rb
322
+ - check-azurerm-monitor-metric.rb
323
+ - check-azurerm-virtual-networks-usage.rb
295
324
  - check-azurerm-service-bus-topic-size.rb
296
325
  - check-azurerm-core-usage.rb
297
- - check-azurerm-cores-dsv2-usage.rb
298
326
  - check-azurerm-virtual-network-gateway-failure-connected.rb
299
327
  - check-azurerm-virtual-machines-usage.rb
300
- - metric-azurerm-service-bus-subscription-message-count.rb
328
+ - check-azurerm-public-ip-addresses-usage.rb
329
+ - check-azurerm-service-bus-subscription.rb
301
330
  - metric-azurerm-virtual-network-gateway-usage.rb
302
- - check-azurerm-virtual-networks-usage.rb
303
331
  - check-azurerm-cores-fs-usage.rb
304
- - check-azurerm-network-security-groups-usage.rb
332
+ - check-azurerm-static-public-ip-addresses-usage.rb
333
+ - check-azurerm-cores-d-usage.rb
305
334
  - check-azurerm-cores-f-usage.rb
306
- - check-azurerm-public-ip-addresses-usage.rb
307
335
  - check-azurerm-cores-dv2-usage.rb
308
- - check-azurerm-virtual-network-gateway-connected.rb
336
+ - check-azurerm-load-balancers-usage.rb
337
+ - check-azurerm-network-interfaces-usage.rb
309
338
  extensions: []
310
339
  extra_rdoc_files: []
311
340
  files:
@@ -320,6 +349,7 @@ files:
320
349
  - bin/check-azurerm-cores-f-usage.rb
321
350
  - bin/check-azurerm-cores-fs-usage.rb
322
351
  - bin/check-azurerm-load-balancers-usage.rb
352
+ - bin/check-azurerm-monitor-metric.rb
323
353
  - bin/check-azurerm-network-interfaces-usage.rb
324
354
  - bin/check-azurerm-network-security-groups-usage.rb
325
355
  - bin/check-azurerm-public-ip-addresses-usage.rb
@@ -339,7 +369,7 @@ files:
339
369
  - lib/sensu-plugins-azurerm/network_usage.rb
340
370
  - lib/sensu-plugins-azurerm/servicebus_usage.rb
341
371
  - lib/sensu-plugins-azurerm/version.rb
342
- homepage: https://github.com/tombuildsstuff/sensu-plugins-azurerm
372
+ homepage: https://github.com/sensu-plugins/sensu-plugins-azurerm
343
373
  licenses:
344
374
  - MIT
345
375
  metadata:
@@ -365,7 +395,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
365
395
  version: '0'
366
396
  requirements: []
367
397
  rubyforge_project:
368
- rubygems_version: 2.7.3
398
+ rubygems_version: 2.6.11
369
399
  signing_key:
370
400
  specification_version: 4
371
401
  summary: Sensu plugins for working with an Azure Resource Manager environment