sensu-plugins-aws 5.0.0 → 5.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 +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
|