sensu-plugins-sensu 0.1.0 → 1.0.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 +24 -4
- data/README.md +1 -0
- data/bin/check-aggregate.rb +141 -24
- data/bin/handler-sensu-deregister.rb +4 -0
- data/bin/handler-sensu.rb +5 -6
- data/bin/metrics-delete-expired-stashes.rb +12 -3
- data/bin/metrics-events.rb +115 -0
- data/lib/sensu-plugins-sensu/version.rb +2 -2
- metadata +20 -39
- checksums.yaml.gz.sig +0 -2
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04111b997fea6a2aa5d6a1659b03e99cb5d68bbf
|
4
|
+
data.tar.gz: 54f75cddacfeefb9bf10fb0e159c3f17e66766f0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
[
|
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
|
-
##
|
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
data/bin/check-aggregate.rb
CHANGED
@@ -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: '
|
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 += '
|
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 =
|
131
|
-
|
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
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
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
|
-
|
163
|
-
|
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
|
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 =
|
116
|
-
|
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
|
-
|
120
|
-
|
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
|
-
|
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 =
|
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
|
-
|
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']
|
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
|
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:
|
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
|
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
|
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.
|
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.
|
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:
|
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.
|
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
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���>�
|