sensu 0.9.0 → 0.9.1
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.
- data/README.org +1 -1
- data/lib/sensu.rb +1 -1
- data/lib/sensu/api.rb +11 -11
- data/lib/sensu/client.rb +15 -15
- data/lib/sensu/config.rb +29 -29
- data/lib/sensu/{helpers → patches}/redis.rb +2 -2
- data/lib/sensu/{helpers → patches}/ruby.rb +0 -0
- data/lib/sensu/server.rb +71 -80
- metadata +6 -6
data/README.org
CHANGED
@@ -35,6 +35,6 @@
|
|
35
35
|
- [[http://twitter.com/amdprophet][Justin Kolberg]]
|
36
36
|
- [[http://twitter.com/kartar][James Turnbull]]
|
37
37
|
- [[http://twitter.com/joshpasqualetto][Josh Pasqualetto]]
|
38
|
-
- Steve Lum
|
38
|
+
- [[http://github.com/lum][Steve Lum]]
|
39
39
|
- [[http://twitter.com/miller_joe][Joe Miller]]
|
40
40
|
- [[http://twitter.com/decklin][Decklin Foster]]
|
data/lib/sensu.rb
CHANGED
data/lib/sensu/api.rb
CHANGED
@@ -3,14 +3,14 @@ require File.join(File.dirname(__FILE__), 'config')
|
|
3
3
|
require 'sinatra/async'
|
4
4
|
require 'redis'
|
5
5
|
|
6
|
-
require File.join(File.dirname(__FILE__), '
|
6
|
+
require File.join(File.dirname(__FILE__), 'patches', 'redis')
|
7
7
|
|
8
8
|
module Sensu
|
9
9
|
class API < Sinatra::Base
|
10
10
|
register Sinatra::Async
|
11
11
|
|
12
12
|
def self.run(options={})
|
13
|
-
EM
|
13
|
+
EM::run do
|
14
14
|
self.setup(options)
|
15
15
|
self.run!(:port => $settings.api.port)
|
16
16
|
|
@@ -39,13 +39,6 @@ module Sensu
|
|
39
39
|
$amq = AMQP::Channel.new(rabbitmq)
|
40
40
|
end
|
41
41
|
|
42
|
-
def self.stop(signal)
|
43
|
-
$logger.warn('[process] -- ' + signal + ' -- stopping sensu api')
|
44
|
-
EM.add_timer(1) do
|
45
|
-
EM.stop
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
42
|
before do
|
50
43
|
content_type 'application/json'
|
51
44
|
end
|
@@ -90,7 +83,7 @@ module Sensu
|
|
90
83
|
}
|
91
84
|
$amq.queue('results').publish({:client => client, :check => check}.to_json)
|
92
85
|
end
|
93
|
-
EM.
|
86
|
+
EM::Timer.new(5) do
|
94
87
|
$redis.srem('clients', client)
|
95
88
|
$redis.del('events:' + client)
|
96
89
|
$redis.del('client:' + client)
|
@@ -253,7 +246,7 @@ module Sensu
|
|
253
246
|
end
|
254
247
|
end
|
255
248
|
|
256
|
-
def self.
|
249
|
+
def self.create_test_scaffolding(options={})
|
257
250
|
self.setup(options)
|
258
251
|
$settings.client.timestamp = Time.now.to_i
|
259
252
|
$redis.set('client:' + $settings.client.name, $settings.client.to_json).callback do
|
@@ -271,5 +264,12 @@ module Sensu
|
|
271
264
|
end
|
272
265
|
end
|
273
266
|
end
|
267
|
+
|
268
|
+
def self.stop(signal)
|
269
|
+
$logger.warn('[stop] -- stopping sensu api -- ' + signal)
|
270
|
+
EM::Timer.new(1) do
|
271
|
+
EM::stop_event_loop
|
272
|
+
end
|
273
|
+
end
|
274
274
|
end
|
275
275
|
end
|
data/lib/sensu/client.rb
CHANGED
@@ -10,7 +10,7 @@ module Sensu
|
|
10
10
|
if options[:pid_file]
|
11
11
|
Process.write_pid(options[:pid_file])
|
12
12
|
end
|
13
|
-
EM
|
13
|
+
EM::run do
|
14
14
|
client.setup_amqp
|
15
15
|
client.setup_keepalives
|
16
16
|
client.setup_subscriptions
|
@@ -31,13 +31,6 @@ module Sensu
|
|
31
31
|
@logger = config.logger || config.open_log
|
32
32
|
end
|
33
33
|
|
34
|
-
def stop(signal)
|
35
|
-
@logger.warn('[stop] -- stopping sensu client -- ' + signal)
|
36
|
-
EM.add_timer(1) do
|
37
|
-
EM.stop
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
34
|
def setup_amqp
|
42
35
|
@logger.debug('[amqp] -- connecting to rabbitmq')
|
43
36
|
rabbitmq = AMQP.connect(@settings.rabbitmq.to_hash.symbolize_keys)
|
@@ -53,13 +46,13 @@ module Sensu
|
|
53
46
|
def setup_keepalives
|
54
47
|
@logger.debug('[keepalive] -- setup keepalives')
|
55
48
|
publish_keepalive
|
56
|
-
EM.
|
49
|
+
EM::PeriodicTimer.new(30) do
|
57
50
|
publish_keepalive
|
58
51
|
end
|
59
52
|
end
|
60
53
|
|
61
54
|
def publish_result(check)
|
62
|
-
@logger.info('[result] -- publishing check result -- ' + check.status.
|
55
|
+
@logger.info('[result] -- publishing check result -- ' + [check.name, check.status, check.output].join(' -- '))
|
63
56
|
@amq.queue('results').publish({
|
64
57
|
:client => @settings.client.name,
|
65
58
|
:check => check.to_hash
|
@@ -95,7 +88,7 @@ module Sensu
|
|
95
88
|
end
|
96
89
|
@checks_in_progress.delete(check.name)
|
97
90
|
end
|
98
|
-
EM
|
91
|
+
EM::defer(execute, publish)
|
99
92
|
else
|
100
93
|
@logger.warn('[execute] -- missing client attributes -- ' + unmatched_tokens.join(', ') + ' -- ' + check.name)
|
101
94
|
check.status = 3
|
@@ -160,11 +153,11 @@ module Sensu
|
|
160
153
|
|
161
154
|
def setup_queue_monitor
|
162
155
|
@logger.debug('[monitor] -- setup queue monitor')
|
163
|
-
EM.
|
156
|
+
EM::PeriodicTimer.new(5) do
|
164
157
|
unless @check_queue.subscribed?
|
165
158
|
@logger.warn('[monitor] -- re-subscribing to subscriptions')
|
166
159
|
@check_queue.delete
|
167
|
-
EM.
|
160
|
+
EM::Timer.new(1) do
|
168
161
|
setup_subscriptions
|
169
162
|
end
|
170
163
|
end
|
@@ -173,12 +166,19 @@ module Sensu
|
|
173
166
|
|
174
167
|
def setup_socket
|
175
168
|
@logger.debug('[socket] -- starting up socket')
|
176
|
-
EM
|
169
|
+
EM::start_server('127.0.0.1', 3030, ClientSocket) do |socket|
|
177
170
|
socket.settings = @settings
|
178
171
|
socket.logger = @logger
|
179
172
|
socket.amq = @amq
|
180
173
|
end
|
181
174
|
end
|
175
|
+
|
176
|
+
def stop(signal)
|
177
|
+
@logger.warn('[stop] -- stopping sensu client -- ' + signal)
|
178
|
+
EM::Timer.new(1) do
|
179
|
+
EM::stop_event_loop
|
180
|
+
end
|
181
|
+
end
|
182
182
|
end
|
183
183
|
|
184
184
|
class ClientSocket < EM::Connection
|
@@ -198,7 +198,7 @@ module Sensu
|
|
198
198
|
:check => check.to_hash
|
199
199
|
}.to_json)
|
200
200
|
else
|
201
|
-
@logger.warn('[socket] -- a check name, exit status, and output are required -- e.g. {"name": "x", "status": 0, output: "y"}')
|
201
|
+
@logger.warn('[socket] -- a check name, exit status, and output are required -- e.g. {"name": "x", "status": 0, "output": "y"}')
|
202
202
|
end
|
203
203
|
rescue JSON::ParserError => error
|
204
204
|
@logger.warn('[socket] -- check result must be valid JSON: ' + error.to_s)
|
data/lib/sensu/config.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '
|
1
|
+
require File.join(File.dirname(__FILE__), 'patches', 'ruby')
|
2
2
|
|
3
3
|
require 'rubygems' if RUBY_VERSION < '1.9.0'
|
4
4
|
require 'bundler'
|
@@ -38,6 +38,10 @@ module Sensu
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
+
def invalid_config(message)
|
42
|
+
raise 'configuration invalid, ' + message
|
43
|
+
end
|
44
|
+
|
41
45
|
def open_log
|
42
46
|
@logger = Cabin::Channel.new
|
43
47
|
if File.writable?(@options[:log_file]) || !File.exist?(@options[:log_file]) && File.writable?(File.dirname(@options[:log_file]))
|
@@ -89,31 +93,6 @@ module Sensu
|
|
89
93
|
end
|
90
94
|
end
|
91
95
|
|
92
|
-
def validate_config
|
93
|
-
if @logger
|
94
|
-
@logger.debug('[config] -- validating configuration')
|
95
|
-
end
|
96
|
-
has_keys(%w[rabbitmq checks])
|
97
|
-
validate_common_config
|
98
|
-
case @options[:service]
|
99
|
-
when 'rake'
|
100
|
-
has_keys(%w[redis api handlers client])
|
101
|
-
validate_server_config
|
102
|
-
validate_client_config
|
103
|
-
when 'sensu-server'
|
104
|
-
has_keys(%w[redis handlers])
|
105
|
-
validate_server_config
|
106
|
-
when 'sensu-api'
|
107
|
-
has_keys(%w[redis api])
|
108
|
-
when 'sensu-client'
|
109
|
-
has_keys(%w[client])
|
110
|
-
validate_client_config
|
111
|
-
end
|
112
|
-
if @logger
|
113
|
-
@logger.debug('[config] -- configuration valid -- running ' + @options[:service])
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
96
|
def validate_common_config
|
118
97
|
@settings.checks.each do |name, details|
|
119
98
|
unless details.interval.is_a?(Integer) && details.interval > 0
|
@@ -149,7 +128,7 @@ module Sensu
|
|
149
128
|
unless details.key?('type')
|
150
129
|
invalid_config('missing type for handler ' + name)
|
151
130
|
end
|
152
|
-
case details
|
131
|
+
case details['type']
|
153
132
|
when 'pipe'
|
154
133
|
unless details.key?('command')
|
155
134
|
invalid_config('missing command for pipe handler ' + name)
|
@@ -187,8 +166,29 @@ module Sensu
|
|
187
166
|
end
|
188
167
|
end
|
189
168
|
|
190
|
-
def
|
191
|
-
|
169
|
+
def validate_config
|
170
|
+
if @logger
|
171
|
+
@logger.debug('[config] -- validating configuration')
|
172
|
+
end
|
173
|
+
has_keys(%w[rabbitmq checks])
|
174
|
+
validate_common_config
|
175
|
+
case @options[:service]
|
176
|
+
when 'rake'
|
177
|
+
has_keys(%w[redis api handlers client])
|
178
|
+
validate_server_config
|
179
|
+
validate_client_config
|
180
|
+
when 'sensu-server'
|
181
|
+
has_keys(%w[redis handlers])
|
182
|
+
validate_server_config
|
183
|
+
when 'sensu-api'
|
184
|
+
has_keys(%w[redis api])
|
185
|
+
when 'sensu-client'
|
186
|
+
has_keys(%w[client])
|
187
|
+
validate_client_config
|
188
|
+
end
|
189
|
+
if @logger
|
190
|
+
@logger.debug('[config] -- configuration valid -- running ' + @options[:service])
|
191
|
+
end
|
192
192
|
end
|
193
193
|
|
194
194
|
def self.read_arguments(arguments)
|
@@ -12,7 +12,7 @@ module Redis
|
|
12
12
|
|
13
13
|
def unbind
|
14
14
|
unless !@connected || @closing_connection
|
15
|
-
EM.
|
15
|
+
EM::Timer.new(1) do
|
16
16
|
reconnect(@host, @port)
|
17
17
|
end
|
18
18
|
else
|
@@ -26,6 +26,6 @@ module Redis
|
|
26
26
|
def self.connect(options={})
|
27
27
|
host = options[:host] || 'localhost'
|
28
28
|
port = options[:port] || 6379
|
29
|
-
EM
|
29
|
+
EM::connect(host, port, Redis::Client)
|
30
30
|
end
|
31
31
|
end
|
File without changes
|
data/lib/sensu/server.rb
CHANGED
@@ -2,7 +2,7 @@ require File.join(File.dirname(__FILE__), 'config')
|
|
2
2
|
|
3
3
|
require 'redis'
|
4
4
|
|
5
|
-
require File.join(File.dirname(__FILE__), '
|
5
|
+
require File.join(File.dirname(__FILE__), 'patches', 'redis')
|
6
6
|
|
7
7
|
module Sensu
|
8
8
|
class Server
|
@@ -16,8 +16,8 @@ module Sensu
|
|
16
16
|
if options[:pid_file]
|
17
17
|
Process.write_pid(options[:pid_file])
|
18
18
|
end
|
19
|
-
EM
|
20
|
-
EM
|
19
|
+
EM::threadpool_size = 16
|
20
|
+
EM::run do
|
21
21
|
server.setup_redis
|
22
22
|
server.setup_amqp
|
23
23
|
server.setup_keepalives
|
@@ -37,17 +37,7 @@ module Sensu
|
|
37
37
|
config = Sensu::Config.new(options)
|
38
38
|
@settings = config.settings
|
39
39
|
@logger = config.logger || config.open_log
|
40
|
-
@
|
41
|
-
end
|
42
|
-
|
43
|
-
def stop_reactor
|
44
|
-
EM.add_timer(3) do
|
45
|
-
EM.stop
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def stopping?
|
50
|
-
@status == :stopping
|
40
|
+
@timers = Array.new
|
51
41
|
end
|
52
42
|
|
53
43
|
def setup_redis
|
@@ -91,8 +81,8 @@ module Sensu
|
|
91
81
|
if @settings.handlers.key?(handler)
|
92
82
|
@logger.debug('[event] -- handling event -- ' + [handler, event.client.name, event.check.name].join(' -- '))
|
93
83
|
details = @settings.handlers[handler]
|
94
|
-
case details
|
95
|
-
when
|
84
|
+
case details['type']
|
85
|
+
when 'pipe'
|
96
86
|
handle = proc do
|
97
87
|
output = ''
|
98
88
|
Bundler.with_clean_env do
|
@@ -108,12 +98,12 @@ module Sensu
|
|
108
98
|
end
|
109
99
|
output
|
110
100
|
end
|
111
|
-
EM
|
112
|
-
when
|
101
|
+
EM::defer(handle, report)
|
102
|
+
when 'amqp'
|
113
103
|
exchange = details.exchange.name
|
114
|
-
exchange_type = details.exchange.key?('type') ? details.exchange
|
104
|
+
exchange_type = details.exchange.key?('type') ? details.exchange['type'].to_sym : :direct
|
115
105
|
exchange_options = details.exchange.reject { |key, value| %w[name type].include?(key) }
|
116
|
-
@logger.debug('[event] -- publishing event to
|
106
|
+
@logger.debug('[event] -- publishing event to rabbitmq exchange -- ' + [exchange, event.client.name, event.check.name].join(' -- '))
|
117
107
|
payload = details.send_only_check_output ? event.check.output : event.to_json
|
118
108
|
@amq.method(exchange_type).call(exchange, exchange_options).publish(payload)
|
119
109
|
end
|
@@ -134,7 +124,7 @@ module Sensu
|
|
134
124
|
:check => check,
|
135
125
|
:occurrences => 1
|
136
126
|
})
|
137
|
-
if check
|
127
|
+
if check['type'] == 'metric'
|
138
128
|
handle_event(event)
|
139
129
|
else
|
140
130
|
history_key = 'history:' + client.name + ':' + check.name
|
@@ -214,7 +204,7 @@ module Sensu
|
|
214
204
|
@result_queue = @amq.queue('results')
|
215
205
|
@result_queue.subscribe do |result_json|
|
216
206
|
result = Hashie::Mash.new(JSON.parse(result_json))
|
217
|
-
@logger.info('[result] -- received result -- ' + [result.
|
207
|
+
@logger.info('[result] -- received result -- ' + [result.client, result.check.name, result.check.status, result.check.output].join(' -- '))
|
218
208
|
process_result(result)
|
219
209
|
end
|
220
210
|
end
|
@@ -225,7 +215,7 @@ module Sensu
|
|
225
215
|
@settings.checks.each_with_index do |(name, details), index|
|
226
216
|
check_request = Hashie::Mash.new({:name => name})
|
227
217
|
unless details.publish == false
|
228
|
-
EM.
|
218
|
+
@timers << EM::Timer.new(stagger*index) do
|
229
219
|
details.subscribers.each do |target|
|
230
220
|
if target.is_a?(Hash)
|
231
221
|
@logger.debug('[publisher] -- check requires matching -- ' + target.to_hash.to_s + ' -- ' + name)
|
@@ -235,12 +225,10 @@ module Sensu
|
|
235
225
|
exchange = target
|
236
226
|
end
|
237
227
|
interval = options[:test] ? 0.5 : details.interval
|
238
|
-
EM.
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
@amq.fanout(exchange).publish(check_request.to_json)
|
243
|
-
end
|
228
|
+
@timers << EM::PeriodicTimer.new(interval) do
|
229
|
+
check_request.issued = Time.now.to_i
|
230
|
+
@logger.info('[publisher] -- publishing check request -- ' + name + ' -- ' + exchange)
|
231
|
+
@amq.fanout(exchange).publish(check_request.to_json)
|
244
232
|
end
|
245
233
|
end
|
246
234
|
end
|
@@ -250,37 +238,35 @@ module Sensu
|
|
250
238
|
|
251
239
|
def setup_keepalive_monitor
|
252
240
|
@logger.debug('[keepalive] -- setup keepalive monitor')
|
253
|
-
EM.
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
:
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
@amq.queue('results').publish(result.to_json)
|
283
|
-
end
|
241
|
+
@timers << EM::PeriodicTimer.new(30) do
|
242
|
+
@logger.debug('[keepalive] -- checking for stale clients')
|
243
|
+
@redis.smembers('clients').callback do |clients|
|
244
|
+
clients.each do |client_id|
|
245
|
+
@redis.get('client:' + client_id).callback do |client_json|
|
246
|
+
client = Hashie::Mash.new(JSON.parse(client_json))
|
247
|
+
time_since_last_keepalive = Time.now.to_i - client.timestamp
|
248
|
+
result = Hashie::Mash.new({
|
249
|
+
:client => client.name,
|
250
|
+
:check => {
|
251
|
+
:name => 'keepalive',
|
252
|
+
:issued => Time.now.to_i
|
253
|
+
}
|
254
|
+
})
|
255
|
+
case
|
256
|
+
when time_since_last_keepalive >= 180
|
257
|
+
result.check.status = 2
|
258
|
+
result.check.output = 'No keep-alive sent from host in over 180 seconds'
|
259
|
+
@amq.queue('results').publish(result.to_json)
|
260
|
+
when time_since_last_keepalive >= 120
|
261
|
+
result.check.status = 1
|
262
|
+
result.check.output = 'No keep-alive sent from host in over 120 seconds'
|
263
|
+
@amq.queue('results').publish(result.to_json)
|
264
|
+
else
|
265
|
+
@redis.hexists('events:' + client_id, 'keepalive').callback do |exists|
|
266
|
+
if exists
|
267
|
+
result.check.status = 0
|
268
|
+
result.check.output = 'Keep-alive sent from host'
|
269
|
+
@amq.queue('results').publish(result.to_json)
|
284
270
|
end
|
285
271
|
end
|
286
272
|
end
|
@@ -320,39 +306,44 @@ module Sensu
|
|
320
306
|
|
321
307
|
def setup_master_monitor
|
322
308
|
request_master_election
|
323
|
-
EM.
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
@
|
328
|
-
@logger.debug('[master] -- updated master lock timestamp -- ' + timestamp.to_s)
|
329
|
-
end
|
330
|
-
else
|
331
|
-
request_master_election
|
309
|
+
@timers << EM::PeriodicTimer.new(20) do
|
310
|
+
if @is_master
|
311
|
+
timestamp = Time.now.to_i
|
312
|
+
@redis.set('lock:master', timestamp).callback do
|
313
|
+
@logger.debug('[master] -- updated master lock timestamp -- ' + timestamp.to_s)
|
332
314
|
end
|
315
|
+
else
|
316
|
+
request_master_election
|
333
317
|
end
|
334
318
|
end
|
335
319
|
end
|
336
320
|
|
337
321
|
def setup_queue_monitor
|
338
322
|
@logger.debug('[monitor] -- setup queue monitor')
|
339
|
-
EM.
|
340
|
-
unless
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
setup_results
|
348
|
-
end
|
323
|
+
@timers << EM::PeriodicTimer.new(5) do
|
324
|
+
unless @keepalive_queue.subscribed?
|
325
|
+
@logger.warn('[monitor] -- re-subscribing to rabbitmq queue -- keepalives')
|
326
|
+
setup_keepalives
|
327
|
+
end
|
328
|
+
unless @result_queue.subscribed?
|
329
|
+
@logger.warn('[monitor] -- re-subscribing to rabbitmq queue -- results')
|
330
|
+
setup_results
|
349
331
|
end
|
350
332
|
end
|
351
333
|
end
|
352
334
|
|
335
|
+
def stop_reactor
|
336
|
+
@logger.warn('[stop] -- stopping reactor')
|
337
|
+
EM::Timer.new(3) do
|
338
|
+
EM::stop_event_loop
|
339
|
+
end
|
340
|
+
end
|
341
|
+
|
353
342
|
def stop(signal)
|
354
343
|
@logger.warn('[stop] -- stopping sensu server -- ' + signal)
|
355
|
-
@
|
344
|
+
@timers.each do |timer|
|
345
|
+
timer.cancel
|
346
|
+
end
|
356
347
|
@keepalive_queue.unsubscribe do
|
357
348
|
@logger.warn('[stop] -- unsubscribed from rabbitmq queue -- keepalives')
|
358
349
|
@result_queue.unsubscribe do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sensu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 57
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
9
|
+
- 1
|
10
|
+
version: 0.9.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Sean Porter
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2011-12-
|
19
|
+
date: 2011-12-27 00:00:00 -08:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -230,8 +230,8 @@ files:
|
|
230
230
|
- lib/sensu/api.rb
|
231
231
|
- lib/sensu/client.rb
|
232
232
|
- lib/sensu/config.rb
|
233
|
-
- lib/sensu/
|
234
|
-
- lib/sensu/
|
233
|
+
- lib/sensu/patches/redis.rb
|
234
|
+
- lib/sensu/patches/ruby.rb
|
235
235
|
- lib/sensu/server.rb
|
236
236
|
- lib/sensu.rb
|
237
237
|
- sensu.gemspec
|