sensu-plugins-aws 3.2.1 → 4.0.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
- data/CHANGELOG.md +45 -1
- data/README.md +33 -0
- data/bin/check-asg-instances-created.rb +127 -0
- data/bin/check-asg-instances-inservice.rb +109 -0
- data/bin/check-cloudfront-tag.rb +70 -0
- data/bin/check-cloudwatch-metric.rb +7 -1
- data/bin/check-ebs-burst-limit.rb +96 -0
- data/bin/check-ec2-cpu_balance.rb +2 -2
- data/bin/check-ec2-filter.rb +38 -5
- data/bin/check-ecs-service-health.rb +37 -6
- data/bin/check-elb-instances-inservice.rb +103 -0
- data/bin/check-instance-events.rb +8 -11
- data/bin/check-instance-health.rb +24 -1
- data/bin/check-instances-count.rb +13 -1
- data/bin/check-rds-events.rb +3 -6
- data/bin/check-rds.rb +92 -52
- data/bin/check-route53-domain-expiration.rb +79 -0
- data/bin/check-s3-object.rb +59 -20
- data/bin/check-s3-tag.rb +70 -0
- data/bin/check-ses-limit.rb +1 -1
- data/bin/check-sqs-messages.rb +16 -18
- data/bin/check-vpc-vpn.rb +42 -47
- data/bin/metrics-asg.rb +156 -0
- data/bin/metrics-autoscaling-instance-count.rb +26 -10
- data/bin/metrics-billing.rb +98 -0
- data/bin/metrics-elasticache.rb +118 -167
- data/bin/metrics-elb-full.rb +1 -1
- data/bin/metrics-elb.rb +68 -59
- data/bin/metrics-rds.rb +135 -0
- data/bin/metrics-s3.rb +105 -0
- data/lib/sensu-plugins-aws.rb +1 -0
- data/lib/sensu-plugins-aws/cloudwatch-common.rb +2 -1
- data/lib/sensu-plugins-aws/version.rb +3 -3
- metadata +39 -3
data/bin/metrics-rds.rb
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# rds-metrics
|
4
|
+
#
|
5
|
+
# DESCRIPTION:
|
6
|
+
# Gets RDS metrics from CloudWatch and puts them in Graphite for longer term storage
|
7
|
+
#
|
8
|
+
# OUTPUT:
|
9
|
+
# metric-data
|
10
|
+
#
|
11
|
+
# PLATFORMS:
|
12
|
+
# Linux
|
13
|
+
#
|
14
|
+
# DEPENDENCIES:
|
15
|
+
# gem: sensu-plugin
|
16
|
+
#
|
17
|
+
# USAGE:
|
18
|
+
# rds-metrics --aws-region eu-west-1
|
19
|
+
# rds-metrics --aws-region eu-west-1 --name sr2x8pbti0eon1
|
20
|
+
#
|
21
|
+
# NOTES:
|
22
|
+
# Returns all RDS statistics for all RDS instances in this account unless you specify --name
|
23
|
+
#
|
24
|
+
# LICENSE:
|
25
|
+
# Peter Hoppe <peter.hoppe.extern@bertelsmann.de>
|
26
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
27
|
+
# for details.
|
28
|
+
#
|
29
|
+
|
30
|
+
require 'sensu-plugins-aws'
|
31
|
+
require 'sensu-plugin/metric/cli'
|
32
|
+
require 'aws-sdk'
|
33
|
+
require 'time'
|
34
|
+
|
35
|
+
class RDSMetrics < Sensu::Plugin::Metric::CLI::Graphite
|
36
|
+
include Common
|
37
|
+
option :aws_region,
|
38
|
+
short: '-r AWS_REGION',
|
39
|
+
long: '--aws-region REGION',
|
40
|
+
description: 'AWS Region (defaults to us-east-1).',
|
41
|
+
default: ENV['AWS_REGION']
|
42
|
+
|
43
|
+
option :db_instance_id,
|
44
|
+
short: '-i N',
|
45
|
+
long: '--db-instance-id NAME',
|
46
|
+
description: 'DB instance identifier'
|
47
|
+
|
48
|
+
option :end_time,
|
49
|
+
short: '-t T',
|
50
|
+
long: '--end-time TIME',
|
51
|
+
default: Time.now,
|
52
|
+
proc: proc { |a| Time.parse a },
|
53
|
+
description: 'CloudWatch metric statistics end time'
|
54
|
+
|
55
|
+
option :period,
|
56
|
+
short: '-p N',
|
57
|
+
long: '--period SECONDS',
|
58
|
+
default: 60,
|
59
|
+
proc: proc(&:to_i),
|
60
|
+
description: 'CloudWatch metric statistics period'
|
61
|
+
|
62
|
+
option :statistics,
|
63
|
+
short: '-S N',
|
64
|
+
long: '--statistics NAME',
|
65
|
+
default: :average,
|
66
|
+
proc: proc { |a| a.downcase.intern },
|
67
|
+
description: 'CloudWatch statistics method'
|
68
|
+
|
69
|
+
def rds
|
70
|
+
@rds = Aws::RDS::Client.new
|
71
|
+
end
|
72
|
+
|
73
|
+
def cloud_watch
|
74
|
+
@cloud_watch = Aws::CloudWatch::Client.new
|
75
|
+
end
|
76
|
+
|
77
|
+
def find_db_instance(id)
|
78
|
+
db = rds.describe_db_instances.db_instances.detect { |db_instance| db_instance.db_instance_identifier == id }
|
79
|
+
unknown 'DB instance not found.' if db.nil?
|
80
|
+
db
|
81
|
+
end
|
82
|
+
|
83
|
+
def cloud_watch_metric(metric_name, value)
|
84
|
+
cloud_watch.get_metric_statistics(
|
85
|
+
namespace: 'AWS/RDS',
|
86
|
+
metric_name: metric_name,
|
87
|
+
dimensions: [
|
88
|
+
{
|
89
|
+
name: 'DBInstanceIdentifier',
|
90
|
+
value: value
|
91
|
+
}
|
92
|
+
],
|
93
|
+
start_time: config[:end_time] - config[:period],
|
94
|
+
end_time: config[:end_time],
|
95
|
+
statistics: [config[:statistics].to_s.capitalize],
|
96
|
+
period: config[:period]
|
97
|
+
)
|
98
|
+
end
|
99
|
+
|
100
|
+
def run
|
101
|
+
statistic_type = {
|
102
|
+
'CPUUtilization' => 'Average',
|
103
|
+
'DatabaseConnections' => 'Average',
|
104
|
+
'FreeStorageSpace' => 'Average',
|
105
|
+
'ReadIOPS' => 'Average',
|
106
|
+
'ReadLatency' => 'Average',
|
107
|
+
'ReadThroughput' => 'Average',
|
108
|
+
'WriteIOPS' => 'Average',
|
109
|
+
'WriteLatency' => 'Average',
|
110
|
+
'WriteThroughput' => 'Average',
|
111
|
+
'ReplicaLag' => 'Average',
|
112
|
+
'SwapUsage' => 'Average',
|
113
|
+
'BinLogDiskUsage' => 'Average',
|
114
|
+
'DiskQueueDepth' => 'Average'
|
115
|
+
}
|
116
|
+
|
117
|
+
@db_instance = find_db_instance config[:db_instance_id]
|
118
|
+
@message = "#{config[:db_instance_id]}: "
|
119
|
+
|
120
|
+
result = {}
|
121
|
+
|
122
|
+
rdsname = @db_instance.db_instance_identifier
|
123
|
+
|
124
|
+
statistic_type.each do |key, _value|
|
125
|
+
r = cloud_watch_metric key, rdsname
|
126
|
+
result[rdsname + '.' + key] = r[:datapoints][0] unless r[:datapoints][0].nil?
|
127
|
+
end
|
128
|
+
unless result.nil?
|
129
|
+
result.each do |key, value|
|
130
|
+
output key.downcase.to_s, value.average, value[:timestamp].to_i
|
131
|
+
end
|
132
|
+
end
|
133
|
+
exit
|
134
|
+
end
|
135
|
+
end
|
data/bin/metrics-s3.rb
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# s3-metrics
|
4
|
+
#
|
5
|
+
# DESCRIPTION:
|
6
|
+
# Gets S3 metrics from CloudWatch and puts them in Graphite for longer term storage
|
7
|
+
#
|
8
|
+
# OUTPUT:
|
9
|
+
# metric-data
|
10
|
+
#
|
11
|
+
# PLATFORMS:
|
12
|
+
# Linux
|
13
|
+
#
|
14
|
+
# DEPENDENCIES:
|
15
|
+
# gem: aws-sdk
|
16
|
+
# gem: sensu-plugin
|
17
|
+
# gem: sensu-plugins-aws
|
18
|
+
#
|
19
|
+
# USAGE:
|
20
|
+
# metrics-s3.rb -r us-west-2
|
21
|
+
#
|
22
|
+
# NOTES:
|
23
|
+
#
|
24
|
+
# LICENSE:
|
25
|
+
# Copyright (c) 2015, Olivier Bazoud, olivier.bazoud@gmail.com
|
26
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
27
|
+
# for details.
|
28
|
+
#
|
29
|
+
|
30
|
+
require 'sensu-plugin/metric/cli'
|
31
|
+
require 'aws-sdk'
|
32
|
+
require 'sensu-plugins-aws'
|
33
|
+
|
34
|
+
class S3Metrics < Sensu::Plugin::Metric::CLI::Graphite
|
35
|
+
include Common
|
36
|
+
|
37
|
+
option :aws_region,
|
38
|
+
short: '-r AWS_REGION',
|
39
|
+
long: '--aws-region REGION',
|
40
|
+
description: 'AWS Region (defaults to us-east-1).',
|
41
|
+
default: 'us-east-1'
|
42
|
+
|
43
|
+
option :scheme,
|
44
|
+
description: 'Metric naming scheme, text to prepend to metric',
|
45
|
+
short: '-s SCHEME',
|
46
|
+
long: '--scheme SCHEME',
|
47
|
+
default: 'sensu.aws.s3.buckets'
|
48
|
+
|
49
|
+
def run
|
50
|
+
begin
|
51
|
+
s3 = Aws::S3::Client.new(aws_config)
|
52
|
+
list_buckets = s3.list_buckets
|
53
|
+
|
54
|
+
cw = Aws::CloudWatch::Client.new(aws_config)
|
55
|
+
|
56
|
+
now = Time.now
|
57
|
+
list_buckets.buckets.each do |bucket|
|
58
|
+
bucket_name = bucket.name.tr('.', '_')
|
59
|
+
bucket_size_bytes = cw.get_metric_statistics(
|
60
|
+
namespace: 'AWS/S3',
|
61
|
+
metric_name: 'BucketSizeBytes',
|
62
|
+
dimensions: [
|
63
|
+
{
|
64
|
+
name: 'BucketName',
|
65
|
+
value: bucket.name
|
66
|
+
}, {
|
67
|
+
name: 'StorageType',
|
68
|
+
value: 'StandardStorage'
|
69
|
+
}
|
70
|
+
],
|
71
|
+
start_time: (now.utc - 24 * 60 * 60).iso8601,
|
72
|
+
end_time: now.utc.iso8601,
|
73
|
+
period: 24 * 60 * 60,
|
74
|
+
statistics: ['Average'],
|
75
|
+
unit: 'Bytes'
|
76
|
+
)
|
77
|
+
output "#{config[:scheme]}.#{bucket_name}.bucket_size_bytes", bucket_size_bytes[:datapoints][0].average, now.to_i unless bucket_size_bytes[:datapoints][0].nil?
|
78
|
+
|
79
|
+
number_of_objects = cw.get_metric_statistics(
|
80
|
+
namespace: 'AWS/S3',
|
81
|
+
metric_name: 'NumberOfObjects',
|
82
|
+
dimensions: [
|
83
|
+
{
|
84
|
+
name: 'BucketName',
|
85
|
+
value: bucket.name
|
86
|
+
}, {
|
87
|
+
name: 'StorageType',
|
88
|
+
value: 'AllStorageTypes'
|
89
|
+
}
|
90
|
+
],
|
91
|
+
start_time: (now.utc - 24 * 60 * 60).iso8601,
|
92
|
+
end_time: now.utc.iso8601,
|
93
|
+
period: 24 * 60 * 60,
|
94
|
+
statistics: ['Average'],
|
95
|
+
unit: 'Count'
|
96
|
+
)
|
97
|
+
output "#{config[:scheme]}.#{bucket_name}.number_of_objects", number_of_objects[:datapoints][0].average, now.to_i unless number_of_objects[:datapoints][0].nil?
|
98
|
+
end
|
99
|
+
|
100
|
+
rescue => e
|
101
|
+
critical "Error: exception: #{e}"
|
102
|
+
end
|
103
|
+
ok
|
104
|
+
end
|
105
|
+
end
|
data/lib/sensu-plugins-aws.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu-plugins-aws
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sensu-Plugins and contributors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -164,6 +164,20 @@ dependencies:
|
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '0.10'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rainbow
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "<"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 2.2.0
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "<"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 2.2.0
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
182
|
name: rake
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -242,15 +256,19 @@ description: |-
|
|
242
256
|
for EC2, SES, and SNS.
|
243
257
|
email: "<sensu-users@googlegroups.com>"
|
244
258
|
executables:
|
259
|
+
- check-asg-instances-created.rb
|
260
|
+
- check-asg-instances-inservice.rb
|
245
261
|
- check-autoscaling-cpucredits.rb
|
246
262
|
- check-beanstalk-elb-metric.rb
|
247
263
|
- check-beanstalk-health.rb
|
248
264
|
- check-certificate-expiry.rb
|
265
|
+
- check-cloudfront-tag.rb
|
249
266
|
- check-cloudwatch-alarm.rb
|
250
267
|
- check-cloudwatch-metric.rb
|
251
268
|
- check-configservice-rules.rb
|
252
269
|
- check-dynamodb-capacity.rb
|
253
270
|
- check-dynamodb-throttle.rb
|
271
|
+
- check-ebs-burst-limit.rb
|
254
272
|
- check-ebs-snapshots.rb
|
255
273
|
- check-ec2-cpu_balance.rb
|
256
274
|
- check-ec2-filter.rb
|
@@ -262,6 +280,7 @@ executables:
|
|
262
280
|
- check-elb-health-fog.rb
|
263
281
|
- check-elb-health-sdk.rb
|
264
282
|
- check-elb-health.rb
|
283
|
+
- check-elb-instances-inservice.rb
|
265
284
|
- check-elb-latency.rb
|
266
285
|
- check-elb-nodes.rb
|
267
286
|
- check-elb-sum-requests.rb
|
@@ -278,8 +297,10 @@ executables:
|
|
278
297
|
- check-redshift-events.rb
|
279
298
|
- check-reserved-instances.rb
|
280
299
|
- check-route.rb
|
300
|
+
- check-route53-domain-expiration.rb
|
281
301
|
- check-s3-bucket.rb
|
282
302
|
- check-s3-object.rb
|
303
|
+
- check-s3-tag.rb
|
283
304
|
- check-sensu-client.rb
|
284
305
|
- check-ses-limit.rb
|
285
306
|
- check-ses-statistics.rb
|
@@ -294,13 +315,17 @@ executables:
|
|
294
315
|
- handler-scale-asg-up.rb
|
295
316
|
- handler-ses.rb
|
296
317
|
- handler-sns.rb
|
318
|
+
- metrics-asg.rb
|
297
319
|
- metrics-autoscaling-instance-count.rb
|
320
|
+
- metrics-billing.rb
|
298
321
|
- metrics-ec2-count.rb
|
299
322
|
- metrics-ec2-filter.rb
|
300
323
|
- metrics-elasticache.rb
|
301
324
|
- metrics-elb-full.rb
|
302
325
|
- metrics-elb.rb
|
303
326
|
- metrics-emr-steps.rb
|
327
|
+
- metrics-rds.rb
|
328
|
+
- metrics-s3.rb
|
304
329
|
- metrics-ses.rb
|
305
330
|
- metrics-sqs.rb
|
306
331
|
extensions: []
|
@@ -309,15 +334,19 @@ files:
|
|
309
334
|
- CHANGELOG.md
|
310
335
|
- LICENSE
|
311
336
|
- README.md
|
337
|
+
- bin/check-asg-instances-created.rb
|
338
|
+
- bin/check-asg-instances-inservice.rb
|
312
339
|
- bin/check-autoscaling-cpucredits.rb
|
313
340
|
- bin/check-beanstalk-elb-metric.rb
|
314
341
|
- bin/check-beanstalk-health.rb
|
315
342
|
- bin/check-certificate-expiry.rb
|
343
|
+
- bin/check-cloudfront-tag.rb
|
316
344
|
- bin/check-cloudwatch-alarm.rb
|
317
345
|
- bin/check-cloudwatch-metric.rb
|
318
346
|
- bin/check-configservice-rules.rb
|
319
347
|
- bin/check-dynamodb-capacity.rb
|
320
348
|
- bin/check-dynamodb-throttle.rb
|
349
|
+
- bin/check-ebs-burst-limit.rb
|
321
350
|
- bin/check-ebs-snapshots.rb
|
322
351
|
- bin/check-ec2-cpu_balance.rb
|
323
352
|
- bin/check-ec2-filter.rb
|
@@ -329,6 +358,7 @@ files:
|
|
329
358
|
- bin/check-elb-health-fog.rb
|
330
359
|
- bin/check-elb-health-sdk.rb
|
331
360
|
- bin/check-elb-health.rb
|
361
|
+
- bin/check-elb-instances-inservice.rb
|
332
362
|
- bin/check-elb-latency.rb
|
333
363
|
- bin/check-elb-nodes.rb
|
334
364
|
- bin/check-elb-sum-requests.rb
|
@@ -345,8 +375,10 @@ files:
|
|
345
375
|
- bin/check-redshift-events.rb
|
346
376
|
- bin/check-reserved-instances.rb
|
347
377
|
- bin/check-route.rb
|
378
|
+
- bin/check-route53-domain-expiration.rb
|
348
379
|
- bin/check-s3-bucket.rb
|
349
380
|
- bin/check-s3-object.rb
|
381
|
+
- bin/check-s3-tag.rb
|
350
382
|
- bin/check-sensu-client.rb
|
351
383
|
- bin/check-ses-limit.rb
|
352
384
|
- bin/check-ses-statistics.rb
|
@@ -362,13 +394,17 @@ files:
|
|
362
394
|
- bin/handler-scale-asg-up.rb
|
363
395
|
- bin/handler-ses.rb
|
364
396
|
- bin/handler-sns.rb
|
397
|
+
- bin/metrics-asg.rb
|
365
398
|
- bin/metrics-autoscaling-instance-count.rb
|
399
|
+
- bin/metrics-billing.rb
|
366
400
|
- bin/metrics-ec2-count.rb
|
367
401
|
- bin/metrics-ec2-filter.rb
|
368
402
|
- bin/metrics-elasticache.rb
|
369
403
|
- bin/metrics-elb-full.rb
|
370
404
|
- bin/metrics-elb.rb
|
371
405
|
- bin/metrics-emr-steps.rb
|
406
|
+
- bin/metrics-rds.rb
|
407
|
+
- bin/metrics-s3.rb
|
372
408
|
- bin/metrics-ses.rb
|
373
409
|
- bin/metrics-sqs.rb
|
374
410
|
- lib/sensu-plugins-aws.rb
|
@@ -402,7 +438,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
402
438
|
version: '0'
|
403
439
|
requirements: []
|
404
440
|
rubyforge_project:
|
405
|
-
rubygems_version: 2.5
|
441
|
+
rubygems_version: 2.4.5
|
406
442
|
signing_key:
|
407
443
|
specification_version: 4
|
408
444
|
summary: Sensu plugins for working with an AWS environment
|