sensu-plugins-aws 3.2.1 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c485509a9d40dee7713b4225ede97470a3f0cefb
|
4
|
+
data.tar.gz: 9e8c41bcc8f9694fd3703b3c76d6707f381fe69a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d28050bd2fe7ca47eca3d4117217d53bd3a5f4670d3aa8fc266a9cbee270047a658a57a4a8ffdee241001d9a5e09db0c0bf4a8c2da87e45d0c3be48d34962b66
|
7
|
+
data.tar.gz: 9edec98c9020e813eefe61855430aa79e68fab69af5a6ff683ee92c6a0dbd397a217c4f284ec182728f9a72fa0809f6f29ba5a5f0cd23ab90362f4ed5970ccb4
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,49 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
|
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
7
|
|
8
|
+
## [4.0.0] - 2016-12-27
|
9
|
+
### Breaking Changes
|
10
|
+
- `check-sqs-messages.rb`, `check-vpc-vpn.rb`, and `metrics-elb.rb` were updated to aws-sdk v2 and no longer take `aws_access_key` and `aws_secret_access_key` options.
|
11
|
+
Credentials should be set in environment variables, a credential file, or with an IAM instance profile.
|
12
|
+
See http://docs.aws.amazon.com/sdkforruby/api/#Configuration for details on setting credentials
|
13
|
+
|
14
|
+
### Added
|
15
|
+
- check-cloudwatch-alarm.rb: Add region support (@ptqa)
|
16
|
+
- metrics-s3.rb: added (@obazoud)
|
17
|
+
- metrics-billing.rb: added (@obazoud)
|
18
|
+
- add check-cloudfront-tag.rb and check-s3-tag.rb (@obazoud)
|
19
|
+
- check-s3-object.rb: add an option to check s3 object's size (@obazoud)
|
20
|
+
- check-ebs-burst-limit.rb: added (@nyxcharon)
|
21
|
+
- check-sqs-messages.rb: added support for checking different metric types (@majormoses)
|
22
|
+
- check-rds.rb: Support added for Aurora Clusters (@daanemanz)
|
23
|
+
- check-vpc-vpn.rb: added warning/critical flags (@bootswithdefer)
|
24
|
+
- add check-route53-domain-expiration.rb that checks when domains registered in Route53 are close to expiration (@eheydrick)
|
25
|
+
- check-ec2-filter.rb: Add exclude tags option (@obazoud)
|
26
|
+
- add metrics-rds.rb (@phoppe93)
|
27
|
+
- check-instance-health.rb: Add support for filters (@AlexKulbiy)
|
28
|
+
- check-rds.rb: Support added for checking all databases in a region (@sstarcher)
|
29
|
+
- check-ecs-service-health.rb: Add `primary_status` option to limit checks to primary deployments (@matthew-watson1)
|
30
|
+
- Add check-asg-instances-created.rb to check for recent autoscaling events (@phoppe93)
|
31
|
+
- Add check-asg-instances-inservice.rb to check autoscaling group size (@phoppe93)
|
32
|
+
- Add check-elb-instances-inservice.rb to check service status of ELB instances (@phoppe93)
|
33
|
+
- Add metrics-asg.rb to grab metrics from autoscaling groups (@phoppe93)
|
34
|
+
|
35
|
+
### Fixed
|
36
|
+
- check-ses-limits.rb: Fix percentage calculation (@eheydrick)
|
37
|
+
- check-ec2-cpu_balance.rb: fix warning and critical message (@mool)
|
38
|
+
- check-instance-events.rb: fixed missing events code; instance-reboot (@TorPeeto)
|
39
|
+
- check-instances-count.rb: fixed issues related to aws sdk version bump (@majormoses)
|
40
|
+
- metrics-elb-full.rb: Fix output (@obazoud)
|
41
|
+
- Fix cloudwatch imports (@nyxcharon)
|
42
|
+
|
43
|
+
### Changed
|
44
|
+
- check-sqs-messages.rb: upgrade to aws-sdk v2 (@majormoses)
|
45
|
+
- check-vpc-vpn: upgrade to aws-sdk v2 (@phoppe93)
|
46
|
+
- check-instance-events.rb: migrated the script to aws sdk v2 because of incompatibility of sdk v1 with newer regions (@oba11)
|
47
|
+
- check-rds-events.rb: migrated the script to aws sdk v2 because of incompatibility of sdk v1 with newer regions (@oba11)
|
48
|
+
- metrics-autoscaling-instance-count.rb: migrated the script to aws sdk v2 and support fetching all autoscaling groups (@oba11)
|
49
|
+
- metrics-elb.rb: upgrade to aws-sdk v2 (@phoppe93)
|
50
|
+
|
8
51
|
## [3.2.1] - 2016-08-10
|
9
52
|
### Fixed
|
10
53
|
- check-instance-health.rb: fixed remediated events not working after resolving it (@oba11)
|
@@ -232,7 +275,8 @@ WARNING: This release contains major breaking changes that will impact all user
|
|
232
275
|
### Added
|
233
276
|
- initial release
|
234
277
|
|
235
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/
|
278
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/4.0.0...HEAD
|
279
|
+
[4.0.0]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/3.2.1...4.0.0
|
236
280
|
[3.2.1]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/3.2.0...3.2.1
|
237
281
|
[3.2.0]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/3.1.0...3.2.0
|
238
282
|
[3.1.0]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/3.0.0...3.1.0
|
data/README.md
CHANGED
@@ -8,6 +8,10 @@
|
|
8
8
|
|
9
9
|
## Functionality
|
10
10
|
|
11
|
+
**check-asg-instances-created.rb**
|
12
|
+
|
13
|
+
**check-asg-instances-inservice.rb**
|
14
|
+
|
11
15
|
**check-autoscaling-cpucredits.rb**
|
12
16
|
|
13
17
|
**check-beanstalk-elb-metric.rb**
|
@@ -16,6 +20,8 @@
|
|
16
20
|
|
17
21
|
**check-cloudwatch-alarm**
|
18
22
|
|
23
|
+
**check-cloudfront-tag**
|
24
|
+
|
19
25
|
**check-configservice-rules**
|
20
26
|
|
21
27
|
**check-dynamodb-capacity.rb**
|
@@ -24,6 +30,8 @@
|
|
24
30
|
|
25
31
|
**check-ebs-snapshots.rb**
|
26
32
|
|
33
|
+
**check-ebs-burst-limit.rb**
|
34
|
+
|
27
35
|
**check-ec2-cpu_balance.rb**
|
28
36
|
|
29
37
|
**check-ec2-filter.rb**
|
@@ -44,6 +52,8 @@
|
|
44
52
|
|
45
53
|
**check-elb-health.rb**
|
46
54
|
|
55
|
+
**check-elb-instances-inservice.rb**
|
56
|
+
|
47
57
|
**check-elb-latency.rb**
|
48
58
|
|
49
59
|
**check-elb-nodes.rb**
|
@@ -70,10 +80,14 @@
|
|
70
80
|
|
71
81
|
**check-reserved-instances.rb**
|
72
82
|
|
83
|
+
**check-route53-domain-expiration.rb**
|
84
|
+
|
73
85
|
**check-s3-bucket.rb**
|
74
86
|
|
75
87
|
**check-s3-object.rb**
|
76
88
|
|
89
|
+
**check-s3-tag.rb**
|
90
|
+
|
77
91
|
**check-ses-limit.rb**
|
78
92
|
|
79
93
|
**check-ses-statistics.rb**
|
@@ -102,8 +116,12 @@
|
|
102
116
|
|
103
117
|
**handler-sns.rb**
|
104
118
|
|
119
|
+
**metrics-asg.rb**
|
120
|
+
|
105
121
|
**metrics-autoscaling-instance-count.rb**
|
106
122
|
|
123
|
+
**metrics-billing.rb**
|
124
|
+
|
107
125
|
**metrics-ec2-count.rb**
|
108
126
|
|
109
127
|
**metrics-ec2-filter.rb**
|
@@ -116,6 +134,10 @@
|
|
116
134
|
|
117
135
|
**metrics-emr-steps.rb**
|
118
136
|
|
137
|
+
**metrics-rds.rb**
|
138
|
+
|
139
|
+
**metrics-s3.rb**
|
140
|
+
|
119
141
|
**metrics-ses.rb**
|
120
142
|
|
121
143
|
**metrics-sqs.rb**
|
@@ -123,13 +145,17 @@
|
|
123
145
|
|
124
146
|
## Files
|
125
147
|
|
148
|
+
* /bin/check-asg-instances-created.rb
|
126
149
|
* /bin/check-autoscaling-cpucredits.rb
|
150
|
+
* /bin/check-asg-instances-inservice.rb
|
127
151
|
* /bin/check-beanstalk-elb-metric.rb
|
128
152
|
* /bin/check-certificate-expiry.rb
|
129
153
|
* /bin/check-configservice-rules.rb
|
154
|
+
* /bin/check-cloudfront-tag.rb
|
130
155
|
* /bin/check-cloudwatch-alarm.rb
|
131
156
|
* /bin/check-dynamodb-capacity.rb
|
132
157
|
* /bin/check-dynamodb-throttle.rb
|
158
|
+
* /bin/check-ebs-burst-limit.rb
|
133
159
|
* /bin/check-ebs-snapshots.rb
|
134
160
|
* /bin/check-ec2-filter.rb
|
135
161
|
* /bin/check-ec2-network.rb
|
@@ -139,6 +165,7 @@
|
|
139
165
|
* /bin/check-elb-health-fog.rb
|
140
166
|
* /bin/check-elb-health-sdk.rb
|
141
167
|
* /bin/check-elb-health.rb
|
168
|
+
* /bin/check-elb-instances-inservice.rb
|
142
169
|
* /bin/check-elb-latency.rb
|
143
170
|
* /bin/check-elb-nodes.rb
|
144
171
|
* /bin/check-elb-sum-requests.rb
|
@@ -149,7 +176,9 @@
|
|
149
176
|
* /bin/check-rds-pending.rb
|
150
177
|
* /bin/check-rds.rb
|
151
178
|
* /bin/check-redshift-events.rb
|
179
|
+
* /bin/check-route53-domain-expiration.rb
|
152
180
|
* /bin/check-s3-object.rb
|
181
|
+
* /bin/check-s3-tag.rb
|
153
182
|
* /bin/check-ses-limit.rb
|
154
183
|
* /bin/check-ses-statistics.rb
|
155
184
|
* /bin/check-sqs-messages.rb
|
@@ -162,12 +191,16 @@
|
|
162
191
|
* /bin/handler-sns.rb
|
163
192
|
* /bin/metrics-autoscaling-instance-count.rb
|
164
193
|
* /bin/check-instances-count.rb
|
194
|
+
* /bin/metrics-asg.rb
|
195
|
+
* /bin/metrics-billing.rb
|
165
196
|
* /bin/metrics-ec2-count.rb
|
166
197
|
* /bin/metrics-ec2-filter.rb
|
167
198
|
* /bin/metrics-elasticache.rb
|
168
199
|
* /bin/metrics-elb-full.rb
|
169
200
|
* /bin/metrics-elb.rb
|
170
201
|
* /bin/metrics-emr-steps.rb
|
202
|
+
* /bin/metrics-rds.rb
|
203
|
+
* /bin/metrics-s3.rb
|
171
204
|
* /bin/metrics-ses.rb
|
172
205
|
* /bin/metrics-sqs.rb
|
173
206
|
|
@@ -0,0 +1,127 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# check-asg-instance-created
|
4
|
+
#
|
5
|
+
# DESCRIPTION:
|
6
|
+
# Check AutoScalingGroup Instances are Terminated & Launching last hour.
|
7
|
+
#
|
8
|
+
# OUTPUT:
|
9
|
+
# plain-text
|
10
|
+
#
|
11
|
+
# PLATFORMS:
|
12
|
+
# Linux
|
13
|
+
#
|
14
|
+
# DEPENDENCIES:
|
15
|
+
# gem: aws-sdk
|
16
|
+
# gem: sensu-plugin
|
17
|
+
#
|
18
|
+
# USAGE:
|
19
|
+
# all AutoScalingGroup
|
20
|
+
# ./check-asg-instance-created -r ${your_region}
|
21
|
+
# one AutoScalingGroup
|
22
|
+
# ./check-asg-instance-created -r ${your_region} -g 'AutoScalingGroupName'
|
23
|
+
#
|
24
|
+
# NOTES:
|
25
|
+
# Based heavily on Peter Hoppe check-asg-instance-created
|
26
|
+
#
|
27
|
+
# LICENSE:
|
28
|
+
# Peter Hoppe <peter.hoppe.extern@bertelsmann.de>
|
29
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
30
|
+
# for details.
|
31
|
+
#
|
32
|
+
|
33
|
+
require 'sensu-plugin/check/cli'
|
34
|
+
require 'aws-sdk'
|
35
|
+
require 'sensu-plugins-aws'
|
36
|
+
|
37
|
+
class CheckAsgInstanceCreated < Sensu::Plugin::Check::CLI
|
38
|
+
include Common
|
39
|
+
option :aws_region,
|
40
|
+
short: '-r AWS_REGION',
|
41
|
+
long: '--aws-region REGION',
|
42
|
+
description: 'AWS Region (defaults to us-east-1).',
|
43
|
+
default: ENV['AWS_REGION']
|
44
|
+
|
45
|
+
option :asg_group_name,
|
46
|
+
short: '-g G',
|
47
|
+
long: '--asg_group_name AutoScalingGroupName',
|
48
|
+
description: 'AutoScalingGroupName to check'
|
49
|
+
|
50
|
+
option :warning_limit,
|
51
|
+
short: '-w W',
|
52
|
+
long: '--warning_limit Warning Limit',
|
53
|
+
description: 'Warning Limit for launching and terminated instances'
|
54
|
+
|
55
|
+
option :critical_limit,
|
56
|
+
short: '-c C',
|
57
|
+
long: '--critical_limit Critical Limit',
|
58
|
+
description: 'Critical Limit for launching and terminated instances'
|
59
|
+
|
60
|
+
def asg
|
61
|
+
@asg = Aws::AutoScaling::Client.new
|
62
|
+
end
|
63
|
+
|
64
|
+
def describe_activities(asg_group_name)
|
65
|
+
asg.describe_scaling_activities(
|
66
|
+
auto_scaling_group_name: asg_group_name.to_s
|
67
|
+
)
|
68
|
+
end
|
69
|
+
|
70
|
+
def run
|
71
|
+
warning = 3
|
72
|
+
critical = 4
|
73
|
+
result_launched = ''
|
74
|
+
result_terminated = ''
|
75
|
+
instance_launching = 0
|
76
|
+
instance_terminating = 0
|
77
|
+
time_now = Time.now
|
78
|
+
time_utc_offset = time_now - time_now.utc_offset
|
79
|
+
|
80
|
+
if !config[:warning_limit].nil?
|
81
|
+
warning = config[:warning_limit]
|
82
|
+
elsif !config[:critical_limit].nil?
|
83
|
+
critical = config[:critical_limit]
|
84
|
+
end
|
85
|
+
|
86
|
+
if config[:asg_group_name].nil?
|
87
|
+
asg.describe_auto_scaling_groups.auto_scaling_groups.each do |asg_group|
|
88
|
+
describe_activities(asg_group.auto_scaling_group_name).each do |activities|
|
89
|
+
activities.activities.each do |activity|
|
90
|
+
if Time.parse(activity.start_time.inspect) > (time_utc_offset - 3600)
|
91
|
+
if activity.description.include? 'Launching'
|
92
|
+
instance_launching += 1
|
93
|
+
result_launched = " #{instance_launching} Instances Launching in AutoScalingGroup #{asg_group.auto_scaling_group_name}"
|
94
|
+
elsif activity.description.include? 'Terminating'
|
95
|
+
instance_terminating += 1
|
96
|
+
result_terminated = " #{instance_terminating} Instances Terminated in AutoScalingGroup #{asg_group.auto_scaling_group_name}"
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
else
|
103
|
+
describe_activities(config[:asg_group_name]).each do |activities|
|
104
|
+
activities.activities.each do |activity|
|
105
|
+
if Time.parse(activity.start_time.inspect) > (time_utc_offset - 3600)
|
106
|
+
if activity.description.include? 'Launching'
|
107
|
+
instance_launching += 1
|
108
|
+
result_launched = " #{instance_launching} Instances Launching in AutoScalingGroup #{config[:asg_group_name]}"
|
109
|
+
elsif activity.description.include? 'Terminating'
|
110
|
+
instance_terminating += 1
|
111
|
+
result_terminated = " #{instance_terminating} Instances Terminated in AutoScalingGroup #{config[:asg_group_name]}"
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
if instance_terminating == 0 && instance_launching == 0
|
118
|
+
ok 'No instances Launched & Terminated last hour'
|
119
|
+
elsif instance_terminating >= critical && instance_launching >= critical
|
120
|
+
critical "#{result_launched} \n #{result_terminated}"
|
121
|
+
elsif instance_terminating >= warning && instance_launching >= warning
|
122
|
+
warning "#{result_launched} \n #{result_terminated}"
|
123
|
+
else
|
124
|
+
ok "#{result_launched} \n #{result_terminated}"
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# check-autoscaling-instances-inservice
|
4
|
+
#
|
5
|
+
# DESCRIPTION:
|
6
|
+
# Check AutoScaling Instances inService.
|
7
|
+
#
|
8
|
+
# OUTPUT:
|
9
|
+
# plain-text
|
10
|
+
#
|
11
|
+
# PLATFORMS:
|
12
|
+
# Linux
|
13
|
+
#
|
14
|
+
# DEPENDENCIES:
|
15
|
+
# gem: aws-sdk
|
16
|
+
# gem: sensu-plugin
|
17
|
+
#
|
18
|
+
# USAGE:
|
19
|
+
# ./check-autoscaling-instances-inservices.rb -r ${your_region}
|
20
|
+
# one autoScalingGroup
|
21
|
+
# ./check-autoscaling-instances-inservices.rb -r ${your_region} -g 'autoScalingGroupName'
|
22
|
+
#
|
23
|
+
# NOTES:
|
24
|
+
# Based heavily on Yohei Kawahara's check-ec2-network
|
25
|
+
#
|
26
|
+
# LICENSE:
|
27
|
+
# Peter Hoppe <peter.hoppe.extern@bertelsmann.de>
|
28
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
29
|
+
# for details.
|
30
|
+
#
|
31
|
+
|
32
|
+
require 'sensu-plugins-aws'
|
33
|
+
require 'sensu-plugin/check/cli'
|
34
|
+
require 'aws-sdk'
|
35
|
+
|
36
|
+
class CheckAsgInstancesInService < Sensu::Plugin::Check::CLI
|
37
|
+
include Common
|
38
|
+
option :aws_region,
|
39
|
+
short: '-r AWS_REGION',
|
40
|
+
long: '--aws-region REGION',
|
41
|
+
description: 'AWS Region (defaults to us-east-1).',
|
42
|
+
default: ENV['AWS_REGION']
|
43
|
+
|
44
|
+
option :group,
|
45
|
+
short: '-g G',
|
46
|
+
long: '--autoscaling-group GROUP',
|
47
|
+
description: 'AutoScaling group to check'
|
48
|
+
|
49
|
+
def asg
|
50
|
+
@asg ||= Aws::AutoScaling::Client.new
|
51
|
+
end
|
52
|
+
|
53
|
+
def describe_asg(asg_name)
|
54
|
+
asg.describe_auto_scaling_groups(
|
55
|
+
auto_scaling_group_names: [asg_name.to_s]
|
56
|
+
)
|
57
|
+
end
|
58
|
+
|
59
|
+
def run
|
60
|
+
warning = 0
|
61
|
+
critical = 0
|
62
|
+
instance_in_service = 0
|
63
|
+
result = ''
|
64
|
+
if config[:group].nil?
|
65
|
+
asg.describe_auto_scaling_groups.auto_scaling_groups.each do |group|
|
66
|
+
grp_name = group.auto_scaling_group_name
|
67
|
+
instance_in_service = 0
|
68
|
+
group.instances.each do |instance|
|
69
|
+
if instance.lifecycle_state == 'InService'
|
70
|
+
instance_in_service += 1
|
71
|
+
end
|
72
|
+
end
|
73
|
+
if instance_in_service == 0
|
74
|
+
critical = 1
|
75
|
+
result += "#{grp_name}: no Instances inService #{instance_in_service} \n"
|
76
|
+
elsif instance_in_service < group.min_size
|
77
|
+
warning = 1
|
78
|
+
result += "#{grp_name} Intance are not okay #{instance_in_service} \n"
|
79
|
+
else
|
80
|
+
result += "#{grp_name} Intance are inService #{instance_in_service} \n"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
else
|
84
|
+
selected_group = describe_asg(config[:group])[0][0]
|
85
|
+
min_size = selected_group.min_size
|
86
|
+
selected_group.instances.each do |instance|
|
87
|
+
if instance.lifecycle_state == 'InService'
|
88
|
+
instance_in_service += 1
|
89
|
+
end
|
90
|
+
end
|
91
|
+
if instance_in_service == 0
|
92
|
+
critical = 1
|
93
|
+
result += "#{config[:group]}: no Instances inService #{instance_in_service} \n"
|
94
|
+
elsif instance_in_service < min_size
|
95
|
+
warning = 1
|
96
|
+
result += "#{config[:group]} Intance are not okay #{instance_in_service} \n"
|
97
|
+
else
|
98
|
+
result += "#{config[:group]} Intance are inService #{instance_in_service} \n"
|
99
|
+
end
|
100
|
+
end
|
101
|
+
if critical == 1
|
102
|
+
critical result
|
103
|
+
elsif warning == 1
|
104
|
+
warning result
|
105
|
+
else
|
106
|
+
ok result
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# check-cloudfront-tag
|
4
|
+
#
|
5
|
+
# DESCRIPTION:
|
6
|
+
# This plugin checks if cloud front distributions have a set of tags.
|
7
|
+
#
|
8
|
+
# OUTPUT:
|
9
|
+
# plain-text
|
10
|
+
#
|
11
|
+
# PLATFORMS:
|
12
|
+
# Linux
|
13
|
+
#
|
14
|
+
# DEPENDENCIES:
|
15
|
+
# gem: aws-sdk
|
16
|
+
# gem: sensu-plugin
|
17
|
+
#
|
18
|
+
# USAGE:
|
19
|
+
# ./check-cloudfront-tag.rb --aws-region eu-west-1 --tag-keys xxx
|
20
|
+
#
|
21
|
+
# NOTES:
|
22
|
+
#
|
23
|
+
# LICENSE:
|
24
|
+
# Copyright (c) 2016, Olivier Bazoud, olivier.bazoud@gmail.com
|
25
|
+
# Released under the same terms as Sensu (the MIT license); see LICENSE
|
26
|
+
# for details.
|
27
|
+
#
|
28
|
+
|
29
|
+
require 'sensu-plugin/check/cli'
|
30
|
+
require 'sensu-plugins-aws/common'
|
31
|
+
require 'aws-sdk'
|
32
|
+
|
33
|
+
class CheckCloudFrontTag < Sensu::Plugin::Check::CLI
|
34
|
+
include Common
|
35
|
+
|
36
|
+
option :aws_region,
|
37
|
+
short: '-r AWS_REGION',
|
38
|
+
long: '--aws-region REGION',
|
39
|
+
description: 'AWS Region (defaults to us-east-1).',
|
40
|
+
default: 'us-east-1'
|
41
|
+
|
42
|
+
option :tag_keys,
|
43
|
+
short: '-t TAG_KEYS',
|
44
|
+
long: '--tag-keys TAG_KEYS',
|
45
|
+
description: 'Tag keys'
|
46
|
+
|
47
|
+
def run
|
48
|
+
tags = config[:tag_keys].split(',')
|
49
|
+
cloudfront = Aws::CloudFront::Client.new
|
50
|
+
missing_tags = []
|
51
|
+
cloudfront.list_distributions.distribution_list.items.each do |distribution|
|
52
|
+
begin
|
53
|
+
keys = cloudfront.list_tags_for_resource(resource: distribution.arn).tags.items.map(&:key)
|
54
|
+
if keys.sort & tags.sort != tags.sort
|
55
|
+
missing_tags.push distribution.id
|
56
|
+
end
|
57
|
+
rescue => _
|
58
|
+
missing_tags.push distribution.id
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
if missing_tags.empty?
|
63
|
+
ok
|
64
|
+
else
|
65
|
+
critical("Missing tags in #{missing_tags}")
|
66
|
+
end
|
67
|
+
rescue => e
|
68
|
+
critical "Error: #{e.message} - #{e.backtrace}"
|
69
|
+
end
|
70
|
+
end
|