sensu 0.7.0 → 0.7.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/Gemfile.lock +3 -1
- data/lib/sensu/api.rb +11 -6
- data/lib/sensu/client.rb +37 -28
- data/lib/sensu/config.rb +15 -11
- data/lib/sensu/helpers.rb +17 -15
- data/lib/sensu/server.rb +69 -57
- data/lib/sensu.rb +1 -1
- data/sensu.gemspec +2 -1
- data/sensu.windows +3 -2
- metadata +27 -14
- data/sensu-logo.png +0 -0
data/Gemfile.lock
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
sensu (0.
|
4
|
+
sensu (0.7.0)
|
5
5
|
amqp (= 0.7.4)
|
6
6
|
async_sinatra
|
7
7
|
em-hiredis
|
8
8
|
em-syslog
|
9
|
+
hashie
|
9
10
|
json
|
10
11
|
thin
|
11
12
|
uuidtools
|
@@ -29,6 +30,7 @@ GEM
|
|
29
30
|
callsite (~> 0.0.5)
|
30
31
|
eventmachine
|
31
32
|
eventmachine (0.12.10)
|
33
|
+
hashie (1.1.0)
|
32
34
|
hiredis (0.3.2)
|
33
35
|
json (1.6.1)
|
34
36
|
mime-types (1.16)
|
data/lib/sensu/api.rb
CHANGED
@@ -9,7 +9,7 @@ module Sensu
|
|
9
9
|
def self.run(options={})
|
10
10
|
EM.run do
|
11
11
|
self.setup(options)
|
12
|
-
self.run!(:port => @settings
|
12
|
+
self.run!(:port => @settings.api.port)
|
13
13
|
|
14
14
|
Signal.trap('INT') do
|
15
15
|
EM.stop
|
@@ -24,8 +24,8 @@ module Sensu
|
|
24
24
|
def self.setup(options={})
|
25
25
|
config = Sensu::Config.new(options)
|
26
26
|
@settings = config.settings
|
27
|
-
set :redis, EM::Hiredis.connect('redis://' + @settings
|
28
|
-
connection = AMQP.connect(
|
27
|
+
set :redis, EM::Hiredis.connect('redis://' + @settings.redis.host + ':' + @settings.redis.port.to_s)
|
28
|
+
connection = AMQP.connect(@settings.rabbitmq.to_hash.symbolize_keys)
|
29
29
|
set :amq, MQ.new(connection)
|
30
30
|
end
|
31
31
|
|
@@ -68,8 +68,8 @@ module Sensu
|
|
68
68
|
unless events_exist == 0
|
69
69
|
conn.redis.hgetall('events:' + client).callback do |events|
|
70
70
|
Hash[*events].keys.each do |check_name|
|
71
|
-
check = {
|
72
|
-
conn.amq.queue('results').publish({
|
71
|
+
check = {:name => check_name, :issued => Time.now.to_i, :status => 0, :output => 'Client is being removed'}
|
72
|
+
conn.amq.queue('results').publish({:client => client, :check => check}.to_json)
|
73
73
|
end
|
74
74
|
EM.add_timer(5) do
|
75
75
|
conn.redis.srem('clients', client)
|
@@ -160,7 +160,12 @@ module Sensu
|
|
160
160
|
}'
|
161
161
|
conn.redis.set('client:test', client).callback do
|
162
162
|
conn.redis.sadd('clients', 'test').callback do
|
163
|
-
conn.redis.hset('events:test', 'test', {
|
163
|
+
conn.redis.hset('events:test', 'test', {
|
164
|
+
:status => 2,
|
165
|
+
:output => 'CRITICAL',
|
166
|
+
:flapping => false,
|
167
|
+
:occurrences => 1
|
168
|
+
}.to_json).callback do
|
164
169
|
conn.redis.set('stash:test/test', '{"key": "value"}').callback do
|
165
170
|
status 201
|
166
171
|
body nil
|
data/lib/sensu/client.rb
CHANGED
@@ -23,69 +23,78 @@ module Sensu
|
|
23
23
|
def initialize(options={})
|
24
24
|
config = Sensu::Config.new(:config_file => options[:config_file])
|
25
25
|
@settings = config.settings
|
26
|
-
@checks_in_progress = Array.new
|
27
26
|
end
|
28
27
|
|
29
28
|
def setup_amqp
|
30
|
-
connection = AMQP.connect(
|
29
|
+
connection = AMQP.connect(@settings.rabbitmq.to_hash.symbolize_keys)
|
31
30
|
@amq = MQ.new(connection)
|
32
|
-
@keepalive_queue = @amq.queue('keepalives')
|
33
|
-
@result_queue = @amq.queue('results')
|
34
31
|
end
|
35
32
|
|
36
33
|
def setup_keepalives
|
37
|
-
|
34
|
+
keepalive_queue = @amq.queue('keepalives')
|
35
|
+
@settings.client.timestamp = Time.now.to_i
|
36
|
+
keepalive_queue.publish(@settings.client.to_json)
|
38
37
|
EM.add_periodic_timer(30) do
|
39
|
-
@
|
38
|
+
@settings.client.timestamp = Time.now.to_i
|
39
|
+
keepalive_queue.publish(@settings.client.to_json)
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
|
+
def publish_result(check)
|
44
|
+
@result_queue ||= @amq.queue('results')
|
45
|
+
@result_queue.publish({
|
46
|
+
:client => @settings.client.name,
|
47
|
+
:check => check.to_hash
|
48
|
+
}.to_json)
|
49
|
+
end
|
50
|
+
|
43
51
|
def execute_check(check)
|
44
|
-
|
45
|
-
if @settings
|
46
|
-
unless @checks_in_progress.include?(check
|
47
|
-
@checks_in_progress.push(check
|
52
|
+
@checks_in_progress ||= Array.new
|
53
|
+
if @settings.checks.key?(check.name)
|
54
|
+
unless @checks_in_progress.include?(check.name)
|
55
|
+
@checks_in_progress.push(check.name)
|
48
56
|
unmatched_tokens = Array.new
|
49
|
-
command = @settings
|
57
|
+
command = @settings.checks[check.name].command.gsub(/:::(.*?):::/) do
|
50
58
|
key = $1.to_s
|
51
|
-
unmatched_tokens.push(key) unless @settings
|
52
|
-
@settings
|
59
|
+
unmatched_tokens.push(key) unless @settings.client.key?(key)
|
60
|
+
@settings.client[key].to_s
|
53
61
|
end
|
54
62
|
if unmatched_tokens.empty?
|
55
63
|
execute = proc do
|
56
64
|
IO.popen(command + ' 2>&1') do |io|
|
57
|
-
|
65
|
+
check.output = io.read
|
58
66
|
end
|
59
|
-
|
60
|
-
result
|
67
|
+
check.status = $?.exitstatus
|
61
68
|
end
|
62
69
|
publish = proc do |result|
|
63
|
-
|
64
|
-
@checks_in_progress.delete(
|
70
|
+
publish_result(check)
|
71
|
+
@checks_in_progress.delete(check.name)
|
65
72
|
end
|
66
73
|
EM.defer(execute, publish)
|
67
74
|
else
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
75
|
+
check.status = 3
|
76
|
+
check.output = 'Missing client attributes: ' + unmatched_tokens.join(', ')
|
77
|
+
check.internal = true
|
78
|
+
publish_result(check)
|
79
|
+
@checks_in_progress.delete(check.name)
|
72
80
|
end
|
73
81
|
end
|
74
82
|
else
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
83
|
+
check.status = 3
|
84
|
+
check.output = 'Unknown check'
|
85
|
+
check.internal = true
|
86
|
+
publish_result(check)
|
87
|
+
@checks_in_progress.delete(check.name)
|
79
88
|
end
|
80
89
|
end
|
81
90
|
|
82
91
|
def setup_subscriptions
|
83
92
|
@check_queue = @amq.queue(UUIDTools::UUID.random_create.to_s, :exclusive => true)
|
84
|
-
@settings
|
93
|
+
@settings.client.subscriptions.each do |exchange|
|
85
94
|
@check_queue.bind(@amq.fanout(exchange))
|
86
95
|
end
|
87
96
|
@check_queue.subscribe do |check_json|
|
88
|
-
check = JSON.parse(check_json)
|
97
|
+
check = Hashie::Mash.new(JSON.parse(check_json))
|
89
98
|
execute_check(check)
|
90
99
|
end
|
91
100
|
end
|
data/lib/sensu/config.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'rubygems' if RUBY_VERSION < '1.9.0'
|
2
2
|
require 'optparse'
|
3
3
|
require 'json'
|
4
|
+
require 'hashie'
|
4
5
|
require 'uuidtools'
|
5
6
|
require 'amqp'
|
6
7
|
require 'em/syslog'
|
@@ -12,29 +13,29 @@ module Sensu
|
|
12
13
|
|
13
14
|
def initialize(options={})
|
14
15
|
config_file = options[:config_file] || '/etc/sensu/config.json'
|
15
|
-
@settings = JSON.parse(File.open(config_file, 'r').read)
|
16
|
+
@settings = Hashie::Mash.new(JSON.parse(File.open(config_file, 'r').read))
|
16
17
|
validate_config
|
17
18
|
end
|
18
19
|
|
19
20
|
def validate_config
|
20
|
-
@settings
|
21
|
-
unless
|
21
|
+
@settings.checks.each do |name, details|
|
22
|
+
unless details.interval.is_a?(Integer) && details.interval > 0
|
22
23
|
raise 'configuration invalid, missing interval for check ' + name
|
23
24
|
end
|
24
|
-
unless
|
25
|
+
unless details.command.is_a?(String)
|
25
26
|
raise 'configuration invalid, missing command for check ' + name
|
26
27
|
end
|
27
|
-
unless
|
28
|
+
unless details.subscribers.is_a?(Array) && details.subscribers.count > 0
|
28
29
|
raise 'configuration invalid, missing subscribers for check ' + name
|
29
30
|
end
|
30
31
|
end
|
31
|
-
unless @settings
|
32
|
+
unless @settings.client.name.is_a?(String)
|
32
33
|
raise 'configuration invalid, client must have a name'
|
33
34
|
end
|
34
|
-
unless @settings
|
35
|
+
unless @settings.client.address.is_a?(String)
|
35
36
|
raise 'configuration invalid, client must have an address (ip or hostname)'
|
36
37
|
end
|
37
|
-
unless @settings
|
38
|
+
unless @settings.client.subscriptions.is_a?(Array) && @settings.client.subscriptions.count > 0
|
38
39
|
raise 'configuration invalid, client must have subscriptions'
|
39
40
|
end
|
40
41
|
end
|
@@ -46,9 +47,12 @@ module Sensu
|
|
46
47
|
puts opts
|
47
48
|
exit
|
48
49
|
end
|
49
|
-
|
50
|
-
|
51
|
-
options[:worker] =
|
50
|
+
current_process = $0.split('/').last
|
51
|
+
if current_process == 'sensu-server' || current_process == 'rake_test_loader.rb'
|
52
|
+
options[:worker] = false
|
53
|
+
opts.on('-w', '--worker', 'Only consume jobs, no check publishing (default: false)') do
|
54
|
+
options[:worker] = true
|
55
|
+
end
|
52
56
|
end
|
53
57
|
options[:config_file] = nil
|
54
58
|
opts.on('-c', '--config FILE', 'Sensu JSON config FILE (default: /etc/sensu/config.json)') do |file|
|
data/lib/sensu/helpers.rb
CHANGED
@@ -1,18 +1,20 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
class Hash
|
2
|
+
def symbolize_keys(item = self)
|
3
|
+
case item
|
4
|
+
when Array
|
5
|
+
item.map do |i|
|
6
|
+
symbolize_keys(i)
|
7
|
+
end
|
8
|
+
when Hash
|
9
|
+
Hash[
|
10
|
+
item.map do |key, value|
|
11
|
+
new_key = key.is_a?(String) ? key.to_sym : key
|
12
|
+
new_value = symbolize_keys(value)
|
13
|
+
[new_key, new_value]
|
14
|
+
end
|
15
|
+
]
|
16
|
+
else
|
17
|
+
item
|
6
18
|
end
|
7
|
-
when Hash
|
8
|
-
Hash[
|
9
|
-
item.map do |key, value|
|
10
|
-
k = key.is_a?(String) ? key.to_sym : key
|
11
|
-
v = symbolize_keys(value)
|
12
|
-
[k,v]
|
13
|
-
end
|
14
|
-
]
|
15
|
-
else
|
16
|
-
item
|
17
19
|
end
|
18
20
|
end
|
data/lib/sensu/server.rb
CHANGED
@@ -38,24 +38,24 @@ module Sensu
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def setup_logging
|
41
|
-
EM.syslog_setup(@settings
|
41
|
+
EM.syslog_setup(@settings.syslog.host, @settings.syslog.port)
|
42
42
|
end
|
43
43
|
|
44
44
|
def setup_redis
|
45
|
-
@redis = EM::Hiredis.connect('redis://' + @settings
|
45
|
+
@redis = EM::Hiredis.connect('redis://' + @settings.redis.host + ':' + @settings.redis.port.to_s)
|
46
46
|
end
|
47
47
|
|
48
48
|
def setup_amqp
|
49
|
-
connection = AMQP.connect(
|
49
|
+
connection = AMQP.connect(@settings.rabbitmq.to_hash.symbolize_keys)
|
50
50
|
@amq = MQ.new(connection)
|
51
51
|
end
|
52
52
|
|
53
53
|
def setup_keepalives
|
54
54
|
@keepalive_queue = @amq.queue('keepalives')
|
55
55
|
@keepalive_queue.subscribe do |keepalive_json|
|
56
|
-
|
57
|
-
@redis.set('client:' +
|
58
|
-
@redis.sadd('clients',
|
56
|
+
client_id = JSON.parse(keepalive_json)['name']
|
57
|
+
@redis.set('client:' + client_id, keepalive_json).callback do
|
58
|
+
@redis.sadd('clients', client_id)
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
@@ -63,7 +63,7 @@ module Sensu
|
|
63
63
|
def handle_event(event)
|
64
64
|
handler = proc do
|
65
65
|
output = ''
|
66
|
-
IO.popen(@settings
|
66
|
+
IO.popen(@settings.handlers[event.check.handler] + ' 2>&1', 'r+') do |io|
|
67
67
|
io.write(event.to_json)
|
68
68
|
io.close_write
|
69
69
|
output = io.read
|
@@ -79,20 +79,21 @@ module Sensu
|
|
79
79
|
end
|
80
80
|
|
81
81
|
def process_result(result)
|
82
|
-
@redis.get('client:' + result
|
82
|
+
@redis.get('client:' + result.client).callback do |client_json|
|
83
83
|
unless client_json.nil?
|
84
|
-
client = JSON.parse(client_json)
|
85
|
-
check = result[
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
84
|
+
client = Hashie::Mash.new(JSON.parse(client_json))
|
85
|
+
check = @settings.checks.key?(result.check.name) ? result.check.merge(@settings.checks[result.check.name]) : result.check
|
86
|
+
check.handler ||= 'default'
|
87
|
+
event = Hashie::Mash.new({
|
88
|
+
:client => client,
|
89
|
+
:check => check,
|
90
|
+
:occurrences => 1
|
91
|
+
})
|
92
|
+
if check.type == 'metric'
|
92
93
|
handle_event(event)
|
93
94
|
else
|
94
|
-
history_key = 'history:' + client
|
95
|
-
@redis.rpush(history_key, check
|
95
|
+
history_key = 'history:' + client.name + ':' + check.name
|
96
|
+
@redis.rpush(history_key, check.status).callback do
|
96
97
|
@redis.lrange(history_key, -21, -1).callback do |history|
|
97
98
|
total_state_change = 0
|
98
99
|
unless history.count < 21
|
@@ -109,40 +110,45 @@ module Sensu
|
|
109
110
|
total_state_change = (state_changes.fdiv(20) * 100).to_i
|
110
111
|
@redis.lpop(history_key)
|
111
112
|
end
|
112
|
-
high_flap_threshold = check
|
113
|
-
low_flap_threshold = check
|
114
|
-
@redis.hget('events:' + client
|
115
|
-
previous_event = event_json ? JSON.parse(event_json) : false
|
116
|
-
|
117
|
-
|
113
|
+
high_flap_threshold = check.high_flap_threshold || 50
|
114
|
+
low_flap_threshold = check.low_flap_threshold || 40
|
115
|
+
@redis.hget('events:' + client.name, check.name).callback do |event_json|
|
116
|
+
previous_event = event_json ? Hashie::Mash.new(JSON.parse(event_json)) : false
|
117
|
+
is_flapping = previous_event ? previous_event.flapping : false
|
118
|
+
is_flapping = case
|
118
119
|
when total_state_change >= high_flap_threshold
|
119
120
|
true
|
120
|
-
when
|
121
|
+
when is_flapping && total_state_change <= low_flap_threshold
|
121
122
|
false
|
122
123
|
else
|
123
|
-
|
124
|
+
is_flapping
|
124
125
|
end
|
125
|
-
if previous_event && check
|
126
|
-
unless
|
127
|
-
@redis.hdel('events:' + client
|
128
|
-
|
129
|
-
|
126
|
+
if previous_event && check.status == 0
|
127
|
+
unless is_flapping
|
128
|
+
@redis.hdel('events:' + client.name, check.name).callback do
|
129
|
+
unless check.internal
|
130
|
+
event.action = 'resolve'
|
131
|
+
handle_event(event)
|
132
|
+
end
|
130
133
|
end
|
131
134
|
else
|
132
|
-
@redis.hset('events:' + client
|
135
|
+
@redis.hset('events:' + client.name, check.name, previous_event.merge({'flapping' => true}).to_json)
|
133
136
|
end
|
134
137
|
elsif check['status'] != 0
|
135
|
-
if previous_event && check
|
136
|
-
event
|
138
|
+
if previous_event && check.status == previous_event.status
|
139
|
+
event.occurrences = previous_event.occurrences += 1
|
137
140
|
end
|
138
|
-
@redis.hset('events:' + client
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
141
|
+
@redis.hset('events:' + client.name, check.name, {
|
142
|
+
:status => check.status,
|
143
|
+
:output => check.output,
|
144
|
+
:flapping => is_flapping,
|
145
|
+
:occurrences => event.occurrences
|
143
146
|
}.to_json).callback do
|
144
|
-
|
145
|
-
|
147
|
+
unless check.internal
|
148
|
+
event.check.flapping = is_flapping
|
149
|
+
event.action = 'create'
|
150
|
+
handle_event(event)
|
151
|
+
end
|
146
152
|
end
|
147
153
|
end
|
148
154
|
end
|
@@ -156,7 +162,7 @@ module Sensu
|
|
156
162
|
def setup_results
|
157
163
|
@result_queue = @amq.queue('results')
|
158
164
|
@result_queue.subscribe do |result_json|
|
159
|
-
result = JSON.parse(result_json)
|
165
|
+
result = Hashie::Mash.new(JSON.parse(result_json))
|
160
166
|
process_result(result)
|
161
167
|
end
|
162
168
|
end
|
@@ -164,13 +170,13 @@ module Sensu
|
|
164
170
|
def setup_publisher(options={})
|
165
171
|
exchanges = Hash.new
|
166
172
|
stagger = options[:test] ? 0 : 7
|
167
|
-
@settings
|
173
|
+
@settings.checks.each_with_index do |(name, details), index|
|
168
174
|
EM.add_timer(stagger*index) do
|
169
|
-
details
|
175
|
+
details.subscribers.each do |exchange|
|
170
176
|
if exchanges[exchange].nil?
|
171
177
|
exchanges[exchange] = @amq.fanout(exchange)
|
172
178
|
end
|
173
|
-
interval = options[:test] ? 0.5 : details
|
179
|
+
interval = options[:test] ? 0.5 : details.interval
|
174
180
|
EM.add_periodic_timer(interval) do
|
175
181
|
exchanges[exchange].publish({'name' => name, 'issued' => Time.now.to_i}.to_json)
|
176
182
|
EM.debug('name="Published Check" event_id=server action="Published check ' + name + ' to the ' + exchange + ' exchange"')
|
@@ -185,24 +191,30 @@ module Sensu
|
|
185
191
|
@redis.smembers('clients').callback do |clients|
|
186
192
|
clients.each do |client_id|
|
187
193
|
@redis.get('client:' + client_id).callback do |client_json|
|
188
|
-
client = JSON.parse(client_json)
|
189
|
-
time_since_last_check = Time.now.to_i - client
|
190
|
-
result = {
|
194
|
+
client = Hashie::Mash.new(JSON.parse(client_json))
|
195
|
+
time_since_last_check = Time.now.to_i - client.timestamp
|
196
|
+
result = Hashie::Mash.new({
|
197
|
+
:client => client.name,
|
198
|
+
:check => {
|
199
|
+
:name => 'keepalive',
|
200
|
+
:issued => Time.now.to_i
|
201
|
+
}
|
202
|
+
})
|
191
203
|
case
|
192
204
|
when time_since_last_check >= 180
|
193
|
-
result
|
194
|
-
result
|
195
|
-
|
205
|
+
result.check.status = 2
|
206
|
+
result.check.output = 'No keep-alive sent from host in over 180 seconds'
|
207
|
+
@result_queue.publish(result.to_json)
|
196
208
|
when time_since_last_check >= 120
|
197
|
-
result
|
198
|
-
result
|
199
|
-
|
209
|
+
result.check.status = 1
|
210
|
+
result.check.output = 'No keep-alive sent from host in over 120 seconds'
|
211
|
+
@result_queue.publish(result.to_json)
|
200
212
|
else
|
201
213
|
@redis.hexists('events:' + client_id, 'keepalive').callback do |exists|
|
202
214
|
if exists == 1
|
203
|
-
result
|
204
|
-
result
|
205
|
-
|
215
|
+
result.check.status = 0
|
216
|
+
result.check.output = 'Keep-alive sent from host'
|
217
|
+
@result_queue.publish(result.to_json)
|
206
218
|
end
|
207
219
|
end
|
208
220
|
end
|
data/lib/sensu.rb
CHANGED
data/sensu.gemspec
CHANGED
@@ -14,6 +14,7 @@ Gem::Specification.new do |s|
|
|
14
14
|
|
15
15
|
s.add_dependency("amqp", "0.7.4")
|
16
16
|
s.add_dependency("json")
|
17
|
+
s.add_dependency("hashie")
|
17
18
|
s.add_dependency("uuidtools")
|
18
19
|
s.add_dependency("em-syslog")
|
19
20
|
s.add_dependency("em-hiredis")
|
@@ -25,7 +26,7 @@ Gem::Specification.new do |s|
|
|
25
26
|
s.add_development_dependency('em-ventually')
|
26
27
|
s.add_development_dependency('rest-client')
|
27
28
|
|
28
|
-
s.files = `git ls-files`.split("\n").reject {|f| f =~ /(dist|test)/}
|
29
|
+
s.files = `git ls-files`.split("\n").reject {|f| f =~ /(dist|test|png)/}
|
29
30
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
30
31
|
s.require_paths = ["lib"]
|
31
32
|
end
|
data/sensu.windows
CHANGED
@@ -21,10 +21,11 @@ Gem::Specification.new do |s|
|
|
21
21
|
s.add_dependency("eventmachine", "1.0.0.beta.4.1")
|
22
22
|
s.add_dependency("amqp", "0.7.4")
|
23
23
|
s.add_dependency("json")
|
24
|
+
s.add_dependency("hashie")
|
24
25
|
s.add_dependency("uuidtools")
|
25
26
|
s.add_dependency("em-syslog")
|
26
27
|
|
27
|
-
s.files = `git ls-files`.split("\n").reject {|f| f =~ /(dist|test)/}
|
28
|
-
s.executables =
|
28
|
+
s.files = `git ls-files`.split("\n").reject {|f| f =~ /(dist|test|server|api|png)/}
|
29
|
+
s.executables = "sensu-client"
|
29
30
|
s.require_paths = ["lib"]
|
30
31
|
end
|
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: 1
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 7
|
9
|
-
-
|
10
|
-
version: 0.7.
|
9
|
+
- 1
|
10
|
+
version: 0.7.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Sean Porter
|
@@ -50,7 +50,7 @@ dependencies:
|
|
50
50
|
type: :runtime
|
51
51
|
version_requirements: *id002
|
52
52
|
- !ruby/object:Gem::Dependency
|
53
|
-
name:
|
53
|
+
name: hashie
|
54
54
|
prerelease: false
|
55
55
|
requirement: &id003 !ruby/object:Gem::Requirement
|
56
56
|
none: false
|
@@ -64,7 +64,7 @@ dependencies:
|
|
64
64
|
type: :runtime
|
65
65
|
version_requirements: *id003
|
66
66
|
- !ruby/object:Gem::Dependency
|
67
|
-
name:
|
67
|
+
name: uuidtools
|
68
68
|
prerelease: false
|
69
69
|
requirement: &id004 !ruby/object:Gem::Requirement
|
70
70
|
none: false
|
@@ -78,7 +78,7 @@ dependencies:
|
|
78
78
|
type: :runtime
|
79
79
|
version_requirements: *id004
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
|
-
name: em-
|
81
|
+
name: em-syslog
|
82
82
|
prerelease: false
|
83
83
|
requirement: &id005 !ruby/object:Gem::Requirement
|
84
84
|
none: false
|
@@ -92,7 +92,7 @@ dependencies:
|
|
92
92
|
type: :runtime
|
93
93
|
version_requirements: *id005
|
94
94
|
- !ruby/object:Gem::Dependency
|
95
|
-
name:
|
95
|
+
name: em-hiredis
|
96
96
|
prerelease: false
|
97
97
|
requirement: &id006 !ruby/object:Gem::Requirement
|
98
98
|
none: false
|
@@ -106,7 +106,7 @@ dependencies:
|
|
106
106
|
type: :runtime
|
107
107
|
version_requirements: *id006
|
108
108
|
- !ruby/object:Gem::Dependency
|
109
|
-
name:
|
109
|
+
name: async_sinatra
|
110
110
|
prerelease: false
|
111
111
|
requirement: &id007 !ruby/object:Gem::Requirement
|
112
112
|
none: false
|
@@ -120,7 +120,7 @@ dependencies:
|
|
120
120
|
type: :runtime
|
121
121
|
version_requirements: *id007
|
122
122
|
- !ruby/object:Gem::Dependency
|
123
|
-
name:
|
123
|
+
name: thin
|
124
124
|
prerelease: false
|
125
125
|
requirement: &id008 !ruby/object:Gem::Requirement
|
126
126
|
none: false
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
segments:
|
132
132
|
- 0
|
133
133
|
version: "0"
|
134
|
-
type: :
|
134
|
+
type: :runtime
|
135
135
|
version_requirements: *id008
|
136
136
|
- !ruby/object:Gem::Dependency
|
137
|
-
name:
|
137
|
+
name: rake
|
138
138
|
prerelease: false
|
139
139
|
requirement: &id009 !ruby/object:Gem::Requirement
|
140
140
|
none: false
|
@@ -148,7 +148,7 @@ dependencies:
|
|
148
148
|
type: :development
|
149
149
|
version_requirements: *id009
|
150
150
|
- !ruby/object:Gem::Dependency
|
151
|
-
name:
|
151
|
+
name: minitest
|
152
152
|
prerelease: false
|
153
153
|
requirement: &id010 !ruby/object:Gem::Requirement
|
154
154
|
none: false
|
@@ -162,7 +162,7 @@ dependencies:
|
|
162
162
|
type: :development
|
163
163
|
version_requirements: *id010
|
164
164
|
- !ruby/object:Gem::Dependency
|
165
|
-
name:
|
165
|
+
name: em-ventually
|
166
166
|
prerelease: false
|
167
167
|
requirement: &id011 !ruby/object:Gem::Requirement
|
168
168
|
none: false
|
@@ -175,6 +175,20 @@ dependencies:
|
|
175
175
|
version: "0"
|
176
176
|
type: :development
|
177
177
|
version_requirements: *id011
|
178
|
+
- !ruby/object:Gem::Dependency
|
179
|
+
name: rest-client
|
180
|
+
prerelease: false
|
181
|
+
requirement: &id012 !ruby/object:Gem::Requirement
|
182
|
+
none: false
|
183
|
+
requirements:
|
184
|
+
- - ">="
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
hash: 3
|
187
|
+
segments:
|
188
|
+
- 0
|
189
|
+
version: "0"
|
190
|
+
type: :development
|
191
|
+
version_requirements: *id012
|
178
192
|
description: A server monitoring framework using the publish-subscribe model
|
179
193
|
email:
|
180
194
|
- sean.porter@sonian.net
|
@@ -203,7 +217,6 @@ files:
|
|
203
217
|
- lib/sensu/config.rb
|
204
218
|
- lib/sensu/helpers.rb
|
205
219
|
- lib/sensu/server.rb
|
206
|
-
- sensu-logo.png
|
207
220
|
- sensu.gemspec
|
208
221
|
- sensu.windows
|
209
222
|
has_rdoc: true
|
data/sensu-logo.png
DELETED
Binary file
|