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 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