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