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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3d3bd06b2e135c2aa0476252fb837eb022432933
4
- data.tar.gz: f8fa65a2aac1d049b5e2fe160c5c9025a6e579be
3
+ metadata.gz: 68d4ea876c28d7359360a917eb6208074e95faf7
4
+ data.tar.gz: a9e7724749ef0d6d5c8b940287fc1069aed5001c
5
5
  SHA512:
6
- metadata.gz: ee628849a14a95a447b7bc7d776bc92966d4772a4e3a4fe094c9e5905a5e6c5665974ecd0ee6a6e1df17287c84a0e3f989a410d5d33fe5a46780e27771a8a26f
7
- data.tar.gz: ae0efd4a9705832898109d163d552251e5fa77bbe32c61b51ed79282b6ededd9ddd1a9d657b0e60ac0d1aea71a8c9dd77118609ccdbb1278c3cee7beebf88313
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.0.0...HEAD
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
@@ -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
- required: true
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 % [config[:key_name], value, config[:bucket_name]]) if operator.call type, value, to_check
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
- output = s3.head_object(bucket: config[:bucket_name], key: config[:key_name])
144
- age = Time.now.to_i - output[:last_modified].to_i
145
- size = output[:content_length]
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 == 0
152
- critical "S3 object #{config[:key_name]} is empty (bucket #{config[:bucket_name]})" unless config[:ok_zero_size]
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 #{config[:key_name]} exists in bucket #{config[:bucket_name]}")
183
+ ok("S3 object #{key_fullname} exists in bucket #{config[:bucket_name]}")
160
184
  rescue Aws::S3::Errors::NotFound => _
161
- critical "S3 object #{config[:key_name]} not found in bucket #{config[:bucket_name]}"
185
+ critical "S3 object #{key_fullname} not found in bucket #{config[:bucket_name]}"
162
186
  rescue => e
163
- critical "S3 object #{config[:key_name]} in bucket #{config[:bucket_name]} - #{e.message} - #{e.backtrace}"
187
+ critical "S3 object #{key_fullname} in bucket #{config[:bucket_name]} - #{e.message} - #{e.backtrace}"
164
188
  end
165
189
  end
166
190
  end
@@ -1,7 +1,7 @@
1
1
  module SensuPluginsAWS
2
2
  module Version
3
3
  MAJOR = 5
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-aws
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
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-04 00:00:00.000000000 Z
11
+ date: 2017-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk