sensu-plugins-aws 5.0.0 → 5.1.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 +4 -1
- data/bin/check-s3-object.rb +38 -14
- data/lib/sensu-plugins-aws/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68d4ea876c28d7359360a917eb6208074e95faf7
|
4
|
+
data.tar.gz: a9e7724749ef0d6d5c8b940287fc1069aed5001c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02fe49c09376fbeddb8a610f6cea37e37a66152d0aad1e41d53f63d79e00ac999ba6bb5d963cabb991b82a40338045060bb447787b786db4b6d810847a802aa7
|
7
|
+
data.tar.gz: 17c3f83d4a95eca2c3a61350a88beccd3dd93ca057d9a1439cf219b8a73200ca32d579125c37cc4acea6c53237a52c708065d180e5612830ee90b862b48889cd
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|
4
4
|
This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
|
+
## [5.1.0] - 2017-05-09
|
8
|
+
- check-s3-object.rb: Add an option to check a file by his prefix (@julio-ogury)
|
7
9
|
|
8
10
|
## [5.0.0] - 2017-05-03
|
9
11
|
### Breaking Change
|
@@ -297,7 +299,8 @@ WARNING: This release contains major breaking changes that will impact all user
|
|
297
299
|
### Added
|
298
300
|
- initial release
|
299
301
|
|
300
|
-
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/5.
|
302
|
+
[Unreleased]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/5.1.0...HEAD
|
303
|
+
[5.1.0]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/5.1.0...5.0.0
|
301
304
|
[5.0.0]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/5.0.0...4.1.0
|
302
305
|
[4.1.0]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/4.1.0...4.0.0
|
303
306
|
[4.0.0]: https://github.com/sensu-plugins/sensu-plugins-aws/compare/3.2.1...4.0.0
|
data/bin/check-s3-object.rb
CHANGED
@@ -64,8 +64,12 @@ class CheckS3Object < Sensu::Plugin::Check::CLI
|
|
64
64
|
option :key_name,
|
65
65
|
short: '-n KEY_NAME',
|
66
66
|
long: '--key-name',
|
67
|
-
description: 'The name of key in the bucket'
|
68
|
-
|
67
|
+
description: 'The name of key in the bucket'
|
68
|
+
|
69
|
+
option :key_prefix,
|
70
|
+
short: '-p KEY_PREFIX',
|
71
|
+
long: '--key-prefix',
|
72
|
+
description: 'Prefix key to search on the bucket'
|
69
73
|
|
70
74
|
option :warning_age,
|
71
75
|
description: 'Warn if mtime greater than provided age in seconds',
|
@@ -124,15 +128,20 @@ class CheckS3Object < Sensu::Plugin::Check::CLI
|
|
124
128
|
op
|
125
129
|
end
|
126
130
|
|
127
|
-
def run_check(type, level, value, msg)
|
131
|
+
def run_check(type, level, value, element, msg)
|
128
132
|
key = "#{level}_#{type}".to_sym
|
129
133
|
return if config[key].nil?
|
130
134
|
to_check = config[key].to_i
|
131
|
-
send(level, msg % [
|
135
|
+
send(level, msg % [element, value, config[:bucket_name]]) if operator.call type, value, to_check
|
132
136
|
end
|
133
137
|
|
134
138
|
def run
|
135
139
|
aws_config = {}
|
140
|
+
|
141
|
+
if (config[:key_name].nil? && config[:key_prefix].nil?) || (!config[:key_name].nil? && !config[:key_prefix].nil?)
|
142
|
+
critical 'Need one option between "key_name" and "key_prefix"'
|
143
|
+
end
|
144
|
+
|
136
145
|
if config[:use_iam_role].nil?
|
137
146
|
aws_config[:access_key_id] = config[:aws_access_key]
|
138
147
|
aws_config[:secret_access_key] = config[:aws_secret_access_key]
|
@@ -140,27 +149,42 @@ class CheckS3Object < Sensu::Plugin::Check::CLI
|
|
140
149
|
|
141
150
|
s3 = Aws::S3::Client.new(aws_config.merge!(region: config[:aws_region]))
|
142
151
|
begin
|
143
|
-
|
144
|
-
|
145
|
-
|
152
|
+
if !config[:key_name].nil?
|
153
|
+
key_search = config[:key_name]
|
154
|
+
key_fullname = key_search
|
155
|
+
output = s3.head_object(bucket: config[:bucket_name], key: key_search)
|
156
|
+
age = Time.now.to_i - output[:last_modified].to_i
|
157
|
+
size = output[:content_length]
|
158
|
+
elsif !config[:key_prefix].nil?
|
159
|
+
key_search = config[:key_prefix]
|
160
|
+
output = s3.list_objects(bucket: config[:bucket_name], prefix: key_search)
|
161
|
+
key_fullname = output.contents[0].key
|
162
|
+
|
163
|
+
if output.contents.size.to_i > 1
|
164
|
+
critical "Your prefix \"#{key_search}\" return too much files, you need to be more specific"
|
165
|
+
end
|
166
|
+
|
167
|
+
age = Time.now.to_i - output.contents[0].last_modified.to_i
|
168
|
+
size = output.contents[0].size
|
169
|
+
end
|
146
170
|
|
147
171
|
[:critical, :warning].each do |level|
|
148
|
-
run_check('age', level, age, 'S3 object %s is %s seconds old (bucket %s)')
|
172
|
+
run_check('age', level, age, key_fullname, 'S3 object %s is %s seconds old (bucket %s)')
|
149
173
|
end
|
150
174
|
|
151
|
-
if size
|
152
|
-
critical "S3 object #{
|
175
|
+
if size.zero?
|
176
|
+
critical "S3 object #{key_fullname} is empty (bucket #{config[:bucket_name]})" unless config[:ok_zero_size]
|
153
177
|
else
|
154
178
|
[:critical, :warning].each do |level|
|
155
|
-
run_check('size', level, size, 'S3 %s object\'size : %s octets (bucket %s)')
|
179
|
+
run_check('size', level, size, key_fullname, 'S3 %s object\'size : %s octets (bucket %s)')
|
156
180
|
end
|
157
181
|
end
|
158
182
|
|
159
|
-
ok("S3 object #{
|
183
|
+
ok("S3 object #{key_fullname} exists in bucket #{config[:bucket_name]}")
|
160
184
|
rescue Aws::S3::Errors::NotFound => _
|
161
|
-
critical "S3 object #{
|
185
|
+
critical "S3 object #{key_fullname} not found in bucket #{config[:bucket_name]}"
|
162
186
|
rescue => e
|
163
|
-
critical "S3 object #{
|
187
|
+
critical "S3 object #{key_fullname} in bucket #{config[:bucket_name]} - #{e.message} - #{e.backtrace}"
|
164
188
|
end
|
165
189
|
end
|
166
190
|
end
|
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: 5.
|
4
|
+
version: 5.1.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: 2017-05-
|
11
|
+
date: 2017-05-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|