sensu-plugins-sensu 0.1.0 → 1.0.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: a381a81345529aeac455af0750fd82ee60598560
4
- data.tar.gz: d9285b72add6aa32615cb5cbc59f36f6729fd6de
3
+ metadata.gz: 04111b997fea6a2aa5d6a1659b03e99cb5d68bbf
4
+ data.tar.gz: 54f75cddacfeefb9bf10fb0e159c3f17e66766f0
5
5
  SHA512:
6
- metadata.gz: ebd55f0b6b842882983204d55b1ff3c2ad2e647d463a7d2963ff627e753f5e444d68858c3627832ccc502736ecffc48d5fc99fcfbf2b6b081eaac149066a2305
7
- data.tar.gz: 5c385b751d7032c950753eaead76b8e360844d3095d032b54d3fbcb18f99a3ab337f7ac5f23cf61aa570c6fb48078152eaafcd9c492242276200e86fd01c1d46
6
+ metadata.gz: acae33c98fbda17c612c842afba2916a320775d5815af897ecb5248a764fb0ea53328983a3b21db3b1f94848d4bbbbce55ade95d817924ff50b99e40b1475ece
7
+ data.tar.gz: 0c32247f9a2778ae88d98b1360fb67082c02a6def6c249f863b613579b406a47263fafc6fd1b4d42fa2dd3a4fdcbd5d08b94e6a7fc83961b08f944e034373ba8
data/CHANGELOG.md CHANGED
@@ -3,9 +3,26 @@ This project adheres to [Semantic Versioning](http://semver.org/).
3
3
 
4
4
  This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachangelog.com/)
5
5
 
6
- ## Unreleased
6
+ ## [Unreleased]
7
7
 
8
- [0.1.0] - 2016-01-08
8
+ ## [1.0.0] - 2016-07-13
9
+ ### Added
10
+ - metrics-events.rb: new plugin to track number of warnings/critical overtime
11
+ - check-aggregates.rb: Added support for new named aggregates introduced in Sensu 0.24
12
+ - check-aggregates.rb: Added misconfiguration check to guard against returning 'ok' status when provided parameters are insufficient
13
+ - check-aggregates.rb: Added new flag to honor stashed checks. If -i is supplied and the threshold alert is being used it will remove any checks that are stashed
14
+ - check-aggregates.rb: Added -k for https insecure mode
15
+ - check-aggregates.rb: Added config option to use environment var SENSU_API=hostname or SENSU_API_URL=hostname:port for -a
16
+ - check-aggregates.rb: Added ability to use node down count instead of percentages
17
+
18
+ ### Changed
19
+ - check-aggregates.rb: If summarize is set and the threshold output is being used the alert will contain the summarized results
20
+ - handler-sensu-deregister.rb: Overrode sensu-plugin's default `filter` method to make it a noop; deregistration events are one-time and shouldn't be filtered
21
+
22
+ ### Removed
23
+ - Remove Ruby 1.9.3 support; add Ruby 2.3.0 support
24
+
25
+ ## [0.1.0] - 2016-01-08
9
26
  ### Added
10
27
  - added sensu-deregister handler for deregistering a sensu client upon request (see https://github.com/sensu/sensu-build/pull/148 for example).
11
28
 
@@ -19,8 +36,11 @@ This CHANGELOG follows the format listed at [Keep A Changelog](http://keepachang
19
36
  ### Removed
20
37
  - Remove JSON gem dep that is not longer needed with Ruby 1.9+
21
38
 
22
- ## [0.0.1] - 2015-06-04
23
-
39
+ ## 0.0.1 - 2015-06-04
24
40
  ### Added
25
41
  - initial release
26
42
 
43
+ [Unreleased]: https://github.com/sensu-plugins/sensu-plugins-sensu/compare/1.0.0...HEAD
44
+ [1.0.0]: https://github.com/sensu-plugins/sensu-plugins-sensu/compare/0.1.0...1.0.0
45
+ [0.1.0]: https://github.com/sensu-plugins/sensu-plugins-sensu/compare/0.0.2...0.1.0
46
+ [0.0.2]: https://github.com/sensu-plugins/sensu-plugins-sensu/compare/0.0.1...0.0.2
data/README.md CHANGED
@@ -12,6 +12,7 @@
12
12
  * bin/check-aggregate.rb
13
13
  * bin/metrics-aggregate.rb
14
14
  * bin/metrics-delete-expired-stashes.rb
15
+ * bin/metrics-events.rb
15
16
  * bin/handler-sensu.rb
16
17
  * bin/handler-sensu-deregister.rb
17
18
 
@@ -21,7 +21,19 @@ class CheckAggregate < Sensu::Plugin::Check::CLI
21
21
  short: '-a URL',
22
22
  long: '--api URL',
23
23
  description: 'Sensu API URL',
24
- default: 'http://localhost:4567'
24
+ default: if ENV['SENSU_API']
25
+ ENV['SENSU_API'] + ':4567'
26
+ elsif ENV['SENSU_API_URL']
27
+ ENV['SENSU_API_URL']
28
+ else
29
+ 'http://localhost:4567'
30
+ end
31
+
32
+ option :insecure,
33
+ short: '-k',
34
+ boolean: true,
35
+ description: 'Enabling insecure connections',
36
+ default: false
25
37
 
26
38
  option :user,
27
39
  short: '-u USER',
@@ -66,35 +78,60 @@ class CheckAggregate < Sensu::Plugin::Check::CLI
66
78
  description: 'Summarize check result output',
67
79
  default: false
68
80
 
81
+ option :collect_output,
82
+ short: '-o',
83
+ long: '--output',
84
+ boolean: true,
85
+ description: 'Collects all non-ok outputs',
86
+ default: false
87
+
69
88
  option :warning,
70
89
  short: '-W PERCENT',
71
90
  long: '--warning PERCENT',
72
91
  description: 'PERCENT non-ok before warning',
73
92
  proc: proc(&:to_i)
74
93
 
94
+ option :warning_count,
95
+ long: '--warning_count INTEGER',
96
+ description: 'number of nodes in warning before warning',
97
+ proc: proc(&:to_i)
98
+
75
99
  option :critical,
76
100
  short: '-C PERCENT',
77
101
  long: '--critical PERCENT',
78
102
  description: 'PERCENT non-ok before critical',
79
103
  proc: proc(&:to_i)
80
104
 
105
+ option :critical_count,
106
+ long: '--critical_count INTEGER',
107
+ description: 'number of node in critical before critical',
108
+ proc: proc(&:to_i)
109
+
81
110
  option :pattern,
82
111
  short: '-P PATTERN',
83
112
  long: '--pattern PATTERN',
84
113
  description: 'A PATTERN to detect outliers'
85
114
 
115
+ option :honor_stash,
116
+ short: '-i',
117
+ long: '--honor-stash',
118
+ description: 'Checks that are stashed will be ignored from the aggregate',
119
+ boolean: true,
120
+ default: false
121
+
86
122
  option :message,
87
123
  short: '-M MESSAGE',
88
124
  long: '--message MESSAGE',
89
125
  description: 'A custom error MESSAGE'
90
126
 
91
127
  def api_request(resource)
128
+ verify_mode = OpenSSL::SSL::VERIFY_PEER
129
+ verify_mode = OpenSSL::SSL::VERIFY_NONE if config[:insecure]
92
130
  request = RestClient::Resource.new(config[:api] + resource, timeout: config[:timeout],
93
131
  user: config[:user],
94
- password: config[:password])
132
+ password: config[:password],
133
+ verify_ssl: verify_mode)
95
134
  JSON.parse(request.get, symbolize_names: true)
96
- rescue RestClient::ResourceNotFound
97
- warning "Resource not found: #{resource}"
98
135
  rescue Errno::ECONNREFUSED
99
136
  warning 'Connection refused'
100
137
  rescue RestClient::RequestFailed
@@ -107,15 +144,60 @@ class CheckAggregate < Sensu::Plugin::Check::CLI
107
144
  warning 'Sensu API returned invalid JSON'
108
145
  end
109
146
 
147
+ def honor_stash(aggregate)
148
+ aggregate[:results].delete_if do |entry|
149
+ begin
150
+ api_request("/stashes/silence/#{entry[:client]}/#{config[:check]}")
151
+ if entry[:status] == 0
152
+ aggregate[:ok] = aggregate[:ok] - 1
153
+ elsif entry[:status] == 1
154
+ aggregate[:warning] = aggregate[:warning] - 1
155
+ elsif entry[:status] == 2
156
+ aggregate[:critical] = aggregate[:critical] - 1
157
+ else
158
+ aggregate[:unknown] = aggregate[:unknown] - 1
159
+ end
160
+ aggregate[:total] = aggregate[:total] - 1
161
+ true
162
+ rescue RestClient::ResourceNotFound
163
+ false
164
+ end
165
+ end
166
+ aggregate
167
+ end
168
+
169
+ def collect_output(aggregate)
170
+ output = ''
171
+ aggregate[:results].each do |entry|
172
+ output << entry[:output] + "\n" unless entry[:status] == 0
173
+ end
174
+ aggregate[:outputs] = [output]
175
+ end
176
+
110
177
  def acquire_aggregate
178
+ if api_request('/info')[:sensu][:version].split('.')[1] >= '24'
179
+ named_aggregate_results
180
+ else
181
+ aggregate_results
182
+ end
183
+ end
184
+
185
+ def named_aggregate_results
186
+ results = api_request("/aggregates/#{config[:check]}?max_age=#{config[:age]}")[:results]
187
+ warning "No aggregates found in last #{config[:age]} seconds" if %w(ok warning critical unknown).all? { |x| results[x.to_sym] == 0 }
188
+ results
189
+ end
190
+
191
+ def aggregate_results
111
192
  uri = "/aggregates/#{config[:check]}"
112
193
  issued = api_request(uri + "?age=#{config[:age]}" + (config[:limit] ? "&limit=#{config[:limit]}" : ''))
113
194
  unless issued.empty?
114
195
  issued_sorted = issued.sort
115
196
  time = issued_sorted.pop
116
197
  unless time.nil?
117
- uri += "/#{time}"
118
- uri += '?summarize=output' if config[:summarize]
198
+ uri += "/#{time}?"
199
+ uri += '&summarize=output' if config[:summarize]
200
+ uri += '&results=true' if config[:honor_stash] || config[:collect_output]
119
201
  api_request(uri)
120
202
  else
121
203
  warning "No aggregates older than #{config[:age]} seconds"
@@ -127,8 +209,16 @@ class CheckAggregate < Sensu::Plugin::Check::CLI
127
209
 
128
210
  def compare_thresholds(aggregate)
129
211
  percent_non_zero = (100 - (aggregate[:ok].to_f / aggregate[:total].to_f) * 100).to_i
130
- message = config[:message] || 'Number of non-zero results exceeds threshold'
131
- message += " (#{percent_non_zero}% non-zero)"
212
+ message = ''
213
+ if aggregate[:outputs]
214
+ aggregate[:outputs].each do |output, count|
215
+ message << "\n" + output.to_s if count == 1
216
+ end
217
+ else
218
+ message = config[:message] || 'Number of non-zero results exceeds threshold'
219
+ message += " (#{percent_non_zero}% non-zero)"
220
+ end
221
+
132
222
  if config[:critical] && percent_non_zero >= config[:critical]
133
223
  critical message
134
224
  elsif config[:warning] && percent_non_zero >= config[:warning]
@@ -137,30 +227,57 @@ class CheckAggregate < Sensu::Plugin::Check::CLI
137
227
  end
138
228
 
139
229
  def compare_pattern(aggregate)
140
- if config[:summarize] && config[:pattern]
141
- regex = Regexp.new(config[:pattern])
142
- mappings = {}
143
- message = config[:message] || 'One of these is not like the others!'
144
- aggregate[:outputs].each do |output, _count|
145
- matched = regex.match(output.to_s)
146
- unless matched.nil?
147
- key = matched[1]
148
- value = matched[2..-1]
149
- if mappings.key?(key)
150
- unless mappings[key] == value # rubocop:disable Metrics/BlockNesting
151
- critical message + " (#{key})"
152
- end
230
+ regex = Regexp.new(config[:pattern])
231
+ mappings = {}
232
+ message = config[:message] || 'One of these is not like the others!'
233
+ aggregate[:outputs].each do |output, _count|
234
+ matched = regex.match(output.to_s)
235
+ unless matched.nil?
236
+ key = matched[1]
237
+ value = matched[2..-1]
238
+ if mappings.key?(key)
239
+ unless mappings[key] == value
240
+ critical message + " (#{key})"
153
241
  end
154
- mappings[key] = value
155
242
  end
243
+ mappings[key] = value
156
244
  end
157
245
  end
158
246
  end
159
247
 
248
+ def compare_thresholds_count(aggregate)
249
+ number_of_nodes_reporting_down = aggregate[:total].to_i - aggregate[:ok].to_i
250
+ message = ''
251
+ if aggregate[:outputs]
252
+ aggregate[:outputs].each do |output, count|
253
+ message << "\n" + output.to_s if count == 1
254
+ end
255
+ else
256
+ message = config[:message] || 'Number of nodes down exceeds threshold'
257
+ message += " (#{number_of_nodes_reporting_down} out of #{aggregate[:total]} nodes reporting not ok)"
258
+ end
259
+
260
+ if config[:critical_count] && number_of_nodes_reporting_down >= config[:critical_count]
261
+ critical message
262
+ elsif config[:warning_count] && number_of_nodes_reporting_down >= config[:warning_count]
263
+ warning message
264
+ end
265
+ end
266
+
160
267
  def run
268
+ threshold = config[:critical] || config[:warning]
269
+ threshold_count = config[:critical_count] || config[:warning_count]
270
+ pattern = config[:summarize] && config[:pattern]
271
+ critical 'Misconfiguration: critical || warning || (summarize && pattern) must be set' unless threshold || pattern || threshold_count
272
+
161
273
  aggregate = acquire_aggregate
162
- compare_thresholds(aggregate)
163
- compare_pattern(aggregate)
274
+ aggregate = honor_stash(aggregate) if config[:honor_stash]
275
+ puts aggregate
276
+ aggregate = collect_output(aggregate) if config[:collect_output]
277
+ compare_thresholds(aggregate) if threshold
278
+ compare_pattern(aggregate) if pattern
279
+ compare_thresholds_count(aggregate) if threshold_count
280
+
164
281
  ok 'Aggregate looks GOOD'
165
282
  end
166
283
  end
@@ -25,4 +25,8 @@ class Deregister < Sensu::Handler
25
25
  puts "#{res}: Completely unsure of what happened!"
26
26
  end
27
27
  end
28
+
29
+ def filter
30
+ # override filter method to disable filtering of deregistration events
31
+ end
28
32
  end
data/bin/handler-sensu.rb CHANGED
@@ -112,14 +112,13 @@ class Remediator < Sensu::Handler
112
112
  # Check for remediations matching the current occurrence count
113
113
  trigger = false
114
114
  (conditions['occurrences'] || []).each do |value|
115
- trigger = case
116
- when value.is_a?(Integer) && occurrences == value then true
117
- when value.to_s =~ /^\d+$/ && occurrences == $LAST_MATCH_INFO.to_a.first.to_i then true
115
+ trigger = if value.is_a?(Integer) && occurrences == value then true
116
+ elsif value.to_s =~ /^\d+$/ && occurrences == $LAST_MATCH_INFO.to_a.first.to_i then true
118
117
  # #YELLOW
119
- when value.to_s =~ /^(\d+)-(\d+)$/ && Range.new($LAST_MATCH_INFO.to_a[1].to_i, $LAST_MATCH_INFO.to_a[2].to_i).to_a.include?(occurrences) then true # rubocop:disable LineLength
120
- when value.to_s.match(/^(\d+)\+$/) && Range.new($LAST_MATCH_INFO.to_a[1].to_i, 9999).include?(occurrences) then true
118
+ elsif value.to_s =~ /^(\d+)-(\d+)$/ && Range.new($LAST_MATCH_INFO.to_a[1].to_i, $LAST_MATCH_INFO.to_a[2].to_i).to_a.include?(occurrences) then true # rubocop:disable LineLength
119
+ elsif value.to_s.match(/^(\d+)\+$/) && Range.new($LAST_MATCH_INFO.to_a[1].to_i, 9999).include?(occurrences) then true
121
120
  else false
122
- end
121
+ end
123
122
  break if trigger
124
123
  end
125
124
 
@@ -17,7 +17,11 @@ require 'socket'
17
17
  include Sensu::Plugin::Utils
18
18
 
19
19
  class CheckSilenced < Sensu::Plugin::Metric::CLI::Graphite
20
- default_host = settings['api']['host'] rescue 'localhost' # rubocop:disable RescueModifier
20
+ default_host = begin
21
+ settings['api']['host']
22
+ rescue
23
+ 'localhost'
24
+ end
21
25
 
22
26
  option :host,
23
27
  short: '-h HOST',
@@ -57,7 +61,12 @@ class CheckSilenced < Sensu::Plugin::Metric::CLI::Graphite
57
61
 
58
62
  def api
59
63
  endpoint = URI.parse("http://#{@config[:host]}:#{@config[:port]}")
60
- @config[:use_ssl?] ? endpoint.scheme = 'https' : endpoint.scheme = 'http'
64
+ endpoint.scheme = if @config[:use_ssl?]
65
+ 'https'
66
+ else
67
+ 'http'
68
+ end
69
+ endpoint.scheme = (@config[:use_ssl?] ? 'https' : 'http')
61
70
  @api ||= RestClient::Resource.new(endpoint, timeout: 45)
62
71
  end
63
72
 
@@ -65,7 +74,7 @@ class CheckSilenced < Sensu::Plugin::Metric::CLI::Graphite
65
74
  all_stashes = JSON.parse(api['/stashes'].get)
66
75
  filtered_stashes = []
67
76
  all_stashes.each do |stash|
68
- filtered_stashes << stash if stash['path'].match(/^#{@config[:filter]}\/.*/)
77
+ filtered_stashes << stash if stash['path'] =~ /^#{@config[:filter]}\/.*/
69
78
  end
70
79
  return filtered_stashes
71
80
  rescue Errno::ECONNREFUSED
@@ -0,0 +1,115 @@
1
+ #!/usr/bin/env ruby
2
+ #
3
+ # Event Metrics
4
+ #
5
+ # Use the /events API to collect events and their severity.
6
+ #
7
+ # sensu.events.total 2 1234535436
8
+ # sensu.events.warning 0 1234535436
9
+ # sensu.events.critical 0 1234535436
10
+ #
11
+ # ===
12
+ #
13
+ # Authors
14
+ # ===
15
+ # Bertrand Roussel, @CoRfr
16
+ #
17
+ # Copyright 2016 Sierra Wireless, Inc.
18
+ #
19
+ # Released under the same terms as Sensu (the MIT license); see
20
+ # LICENSE for details.
21
+
22
+ require 'sensu-plugin/metric/cli'
23
+ require 'rest-client'
24
+ require 'json'
25
+
26
+ class AggregateMetrics < Sensu::Plugin::Metric::CLI::Graphite
27
+ option :api,
28
+ short: '-a URL',
29
+ long: '--api URL',
30
+ description: 'Sensu API URL',
31
+ default: 'http://localhost:4567'
32
+
33
+ option :user,
34
+ short: '-u USER',
35
+ long: '--user USER',
36
+ description: 'Sensu API USER'
37
+
38
+ option :password,
39
+ short: '-p PASSOWRD',
40
+ long: '--password PASSWORD',
41
+ description: 'Sensu API PASSWORD'
42
+
43
+ option :timeout,
44
+ short: '-t SECONDS',
45
+ long: '--timeout SECONDS',
46
+ description: 'Sensu API connection timeout in SECONDS',
47
+ proc: proc(&:to_i),
48
+ default: 30
49
+
50
+ option :scheme,
51
+ description: 'Metric naming scheme',
52
+ long: '--scheme SCHEME',
53
+ default: "#{Socket.gethostname}.sensu.events"
54
+
55
+ option :debug,
56
+ long: '--debug',
57
+ description: 'Verbose output'
58
+
59
+ def api_request(resource)
60
+ request = RestClient::Resource.new(config[:api] + resource, timeout: config[:timeout],
61
+ user: config[:user],
62
+ password: config[:password])
63
+ JSON.parse(request.get, symbolize_names: true)
64
+ rescue RestClient::ResourceNotFound
65
+ warning "Resource not found: #{resource}"
66
+ rescue Errno::ECONNREFUSED
67
+ warning 'Connection refused'
68
+ rescue RestClient::RequestFailed
69
+ warning 'Request failed'
70
+ rescue RestClient::RequestTimeout
71
+ warning 'Connection timed out'
72
+ rescue RestClient::Unauthorized
73
+ warning 'Missing or incorrect Sensu API credentials'
74
+ rescue JSON::ParserError
75
+ warning 'Sensu API returned invalid JSON'
76
+ end
77
+
78
+ def acquire_events
79
+ uri = '/events'
80
+ checks = api_request(uri)
81
+ puts "Events: #{checks.inspect}" if config[:debug]
82
+ checks
83
+ end
84
+
85
+ def run
86
+ timestamp = Time.now.to_i
87
+
88
+ status_count = {}
89
+ status_count[1] = 0
90
+ status_count[2] = 0
91
+
92
+ status_names = {}
93
+ status_names[1] = 'warning'
94
+ status_names[2] = 'critical'
95
+
96
+ total_count = 0
97
+ acquire_events.each do |event|
98
+ total_count += 1
99
+ status_count[event[:check][:status]] ||= 0
100
+ status_count[event[:check][:status]] += 1
101
+ end
102
+
103
+ output "#{config[:scheme]}.total", total_count, timestamp
104
+ status_count.each do |status, count|
105
+ name = status_names[status]
106
+ if name
107
+ output "#{config[:scheme]}.#{name}", count, timestamp
108
+ else
109
+ output "#{config[:scheme]}.status.#{status}", count, timestamp
110
+ end
111
+ end
112
+
113
+ ok
114
+ end
115
+ end
@@ -1,8 +1,8 @@
1
1
  module SensuPluginsSensu
2
2
  # This defines the version of the gem
3
3
  module Version
4
- MAJOR = 0
5
- MINOR = 1
4
+ MAJOR = 1
5
+ MINOR = 0
6
6
  PATCH = 0
7
7
 
8
8
  VER_STRING = [MAJOR, MINOR, PATCH].compact.join('.')
metadata CHANGED
@@ -1,51 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu-plugins-sensu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sensu-Plugins and contributors
8
8
  autorequire:
9
9
  bindir: bin
10
- cert_chain:
11
- - |
12
- -----BEGIN CERTIFICATE-----
13
- MIIDgDCCAmigAwIBAgIBATANBgkqhkiG9w0BAQUFADBDMRIwEAYDVQQDDAltYXR0
14
- am9uZXMxGDAWBgoJkiaJk/IsZAEZFgh5aWVsZGJvdDETMBEGCgmSJomT8ixkARkW
15
- A2NvbTAeFw0xNTAxMjgyMTAyNTFaFw0xNjAxMjgyMTAyNTFaMEMxEjAQBgNVBAMM
16
- CW1hdHRqb25lczEYMBYGCgmSJomT8ixkARkWCHlpZWxkYm90MRMwEQYKCZImiZPy
17
- LGQBGRYDY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyTSzVYnO
18
- CLgyrIyT1mBQakArQyW8xhi6MlDqyzXHJGeERT790U6EgoBVeS4XoK0ptFZNR8Tf
19
- zko0w+Nv47TarSCgkPOaxY+mxWnAVR10dOmfeLr7huiMyps+YD56/EF2FqQ3jf/+
20
- qohENfKD91qy1ieEy+Fn7Pf74ltbNKUdkb9a9eFXQ0DQ4ip5vik7DzjQkUTj4lca
21
- k6ArwnmHX4YDhZoYtrQJ8jVktN0/+NtA40M5qkCYHNe5tUW25b/tKVYuioxG6b2Z
22
- oIzaZxRLxf6HVAWpCVRT/F5+/yjigkX4u++eYacfLGleXQzoK7BL65vHGMJygWEE
23
- 0TKGqFOrl/L0AQIDAQABo38wfTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNV
24
- HQ4EFgQUEf6a8Td7MrSZc8ImbLFZAENPbz0wIQYDVR0RBBowGIEWbWF0dGpvbmVz
25
- QHlpZWxkYm90LmNvbTAhBgNVHRIEGjAYgRZtYXR0am9uZXNAeWllbGRib3QuY29t
26
- MA0GCSqGSIb3DQEBBQUAA4IBAQBbzXAYA3BVGw8DZ0YYoY1VHPNEcH5qPIApmHO8
27
- rvSmuUT0yMEi7u00H/5uHRFf4LleGT/+sTdyXKsNPGT9kdRuQEgwi+vf7Zfvd8aX
28
- UF/+4VkEYf/8rV8Ere6u2QaWPgApdMV6JjKr1fAwCTd8AuGXNaWItiPPMseSQzLJ
29
- JKP4hVvbc1d+oS925B1lcBiqn2aYvElbyNAVmQPywNNqkWmvtlqj9ZVJfV5HQLdu
30
- 8sHuVruarogxxKPBzlL2is4EUb6oN/RdpGx2l4254+nyR+abg//Ed27Ym0PkB4lk
31
- HP0m8WSjZmFr109pE/sVsM5jtOCvogyujQOjNVGN4gz1wwPr
32
- -----END CERTIFICATE-----
33
- date: 2016-01-08 00:00:00.000000000 Z
10
+ cert_chain: []
11
+ date: 2016-07-14 00:00:00.000000000 Z
34
12
  dependencies:
35
13
  - !ruby/object:Gem::Dependency
36
14
  name: sensu-plugin
37
15
  requirement: !ruby/object:Gem::Requirement
38
16
  requirements:
39
- - - '='
17
+ - - "~>"
40
18
  - !ruby/object:Gem::Version
41
- version: 1.2.0
19
+ version: '1.2'
42
20
  type: :runtime
43
21
  prerelease: false
44
22
  version_requirements: !ruby/object:Gem::Requirement
45
23
  requirements:
46
- - - '='
24
+ - - "~>"
47
25
  - !ruby/object:Gem::Version
48
- version: 1.2.0
26
+ version: '1.2'
49
27
  - !ruby/object:Gem::Dependency
50
28
  name: rest-client
51
29
  requirement: !ruby/object:Gem::Requirement
@@ -134,16 +112,16 @@ dependencies:
134
112
  name: rubocop
135
113
  requirement: !ruby/object:Gem::Requirement
136
114
  requirements:
137
- - - '='
115
+ - - "~>"
138
116
  - !ruby/object:Gem::Version
139
- version: 0.32.1
117
+ version: 0.40.0
140
118
  type: :development
141
119
  prerelease: false
142
120
  version_requirements: !ruby/object:Gem::Requirement
143
121
  requirements:
144
- - - '='
122
+ - - "~>"
145
123
  - !ruby/object:Gem::Version
146
- version: 0.32.1
124
+ version: 0.40.0
147
125
  - !ruby/object:Gem::Dependency
148
126
  name: rspec
149
127
  requirement: !ruby/object:Gem::Requirement
@@ -203,11 +181,12 @@ dependencies:
203
181
  description: This plugin provides monitoring and metrics for Sensu.
204
182
  email: "<sensu-users@googlegroups.com>"
205
183
  executables:
206
- - metrics-delete-expired-stashes.rb
207
- - metrics-aggregate.rb
208
- - handler-sensu.rb
209
- - handler-sensu-deregister.rb
210
184
  - check-aggregate.rb
185
+ - handler-sensu-deregister.rb
186
+ - handler-sensu.rb
187
+ - metrics-aggregate.rb
188
+ - metrics-delete-expired-stashes.rb
189
+ - metrics-events.rb
211
190
  extensions: []
212
191
  extra_rdoc_files: []
213
192
  files:
@@ -219,6 +198,7 @@ files:
219
198
  - bin/handler-sensu.rb
220
199
  - bin/metrics-aggregate.rb
221
200
  - bin/metrics-delete-expired-stashes.rb
201
+ - bin/metrics-events.rb
222
202
  - lib/sensu-plugins-sensu.rb
223
203
  - lib/sensu-plugins-sensu/version.rb
224
204
  homepage: https://github.com/sensu-plugins/sensu-plugins-sensu
@@ -239,7 +219,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
239
219
  requirements:
240
220
  - - ">="
241
221
  - !ruby/object:Gem::Version
242
- version: 1.9.3
222
+ version: 2.0.0
243
223
  required_rubygems_version: !ruby/object:Gem::Requirement
244
224
  requirements:
245
225
  - - ">="
@@ -247,8 +227,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
247
227
  version: '0'
248
228
  requirements: []
249
229
  rubyforge_project:
250
- rubygems_version: 2.4.8
230
+ rubygems_version: 2.5.1
251
231
  signing_key:
252
232
  specification_version: 4
253
233
  summary: Sensu plugins for sensu
254
234
  test_files: []
235
+ has_rdoc:
checksums.yaml.gz.sig DELETED
@@ -1,2 +0,0 @@
1
-
2
- �f�5��c��/�:��"?�bp�)��h;�&���sP5��@1~������`ty�"���@iXVj#�A�V�{�C�8�uG-�Ơ"��T�m Nщ�ٛ���u䒚b�X���+1P�z6C�,�G�)ɂ�j�{�h���X6@AQ&�:�@-�N�/���2��%!��[��@$�DG�`��sӿ�=�:%����&Cd%��f��� ��x���;ҹc6U ~�(6c�b����!�� ������l�
data.tar.gz.sig DELETED
Binary file
metadata.gz.sig DELETED
@@ -1 +0,0 @@
1
- օa���|��pR��X�sQ>�C�^cS7�jՒⓆD?z�� dɹ�N��Ya�(��ƼN�v��'��3�|�_3�GB\�k��� j�5i�7����XZl:ubtAg�BR�����,�>�~;r��2�ה0"�"�Rf��2:��罊kz�7�i��I�p��� xTVֻ" n���ٍw6t�J��FѶKn��Nߥz��"�qPuY��e!��ia`ÐS!`x��� ����Z���>�