sensu 0.9.5.beta.2 → 0.9.5.beta.3

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/lib/sensu.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Sensu
2
- VERSION = "0.9.5.beta.2"
2
+ # A monitoring framework that aims to be simple, malleable, & scalable.
3
3
  end
data/lib/sensu/api.rb CHANGED
@@ -148,13 +148,15 @@ module Sensu
148
148
 
149
149
  aget '/checks' do
150
150
  $logger.debug('[checks] -- ' + request.ip + ' -- GET -- request for check list')
151
- body $settings.checks.to_json
151
+ response = $settings.checks.map { |check, details| details.merge(:name => check) }
152
+ body response.to_json
152
153
  end
153
154
 
154
155
  aget '/check/:name' do |check|
155
156
  $logger.debug('[check] -- ' + request.ip + ' -- GET -- request for check -- ' + check)
156
157
  if $settings.checks.key?(check)
157
- body $settings.checks[check].to_json
158
+ response = $settings.checks[check].merge(:name => check)
159
+ body response.to_json
158
160
  else
159
161
  status 404
160
162
  body ''
data/lib/sensu/config.rb CHANGED
@@ -12,7 +12,7 @@ require 'amqp'
12
12
  require 'cabin'
13
13
  require 'cabin/outputs/em/stdlib-logger'
14
14
 
15
- require File.join(File.dirname(__FILE__), '..', 'sensu')
15
+ require File.join(File.dirname(__FILE__), 'version')
16
16
  require File.join(File.dirname(__FILE__), 'patches', 'ruby')
17
17
  require File.join(File.dirname(__FILE__), 'patches', 'amqp')
18
18
 
@@ -36,7 +36,9 @@ module Sensu
36
36
  end
37
37
 
38
38
  def invalid_config(message)
39
- raise 'configuration invalid, ' + message
39
+ puts 'CONFIGURATION INVALID: ' + message
40
+ puts 'SENSU NOT RUNNING'
41
+ exit 2
40
42
  end
41
43
 
42
44
  def setup_logging
@@ -75,6 +77,11 @@ module Sensu
75
77
  unless details.subscribers.is_a?(Array) && details.subscribers.count > 0
76
78
  invalid_config('missing subscribers for check ' + name)
77
79
  end
80
+ details.subscribers.each do |subscriber|
81
+ unless subscriber.is_a?(String) && !subscriber.empty?
82
+ invalid_config('a check subscriber must be a string (not empty) for check ' + name)
83
+ end
84
+ end
78
85
  end
79
86
  if details.key?('handler')
80
87
  unless details.handler.is_a?(String)
@@ -95,7 +102,7 @@ module Sensu
95
102
  end
96
103
  @settings.handlers.each do |name, details|
97
104
  unless details.is_a?(Hash)
98
- invalid_config('hander details must be a hash ' + name)
105
+ invalid_config('handler details must be a hash for handler ' + name)
99
106
  end
100
107
  unless details['type'].is_a?(String)
101
108
  invalid_config('missing type for handler ' + name)
@@ -128,12 +135,13 @@ module Sensu
128
135
  end
129
136
 
130
137
  def validate_api_settings
131
- if @settings.api.key?('user')
138
+ unless @settings.api.port.is_a?(Integer)
139
+ invalid_config('api port must be an integer')
140
+ end
141
+ if @settings.api.key?('user') || @settings.api.key?('password')
132
142
  unless @settings.api.user.is_a?(String)
133
143
  invalid_config('api user must be a string')
134
144
  end
135
- end
136
- if @settings.api.key?('password')
137
145
  unless @settings.api.password.is_a?(String)
138
146
  invalid_config('api password must be a string')
139
147
  end
@@ -150,6 +158,11 @@ module Sensu
150
158
  unless @settings.client.subscriptions.is_a?(Array) && @settings.client.subscriptions.count > 0
151
159
  invalid_config('client must have subscriptions')
152
160
  end
161
+ @settings.client.subscriptions.each do |subscription|
162
+ unless subscription.is_a?(String) && !subscription.empty?
163
+ invalid_config('a client subscription must be a string (not empty)')
164
+ end
165
+ end
153
166
  end
154
167
 
155
168
  def has_keys(keys)
@@ -162,11 +175,11 @@ module Sensu
162
175
 
163
176
  def validate_settings
164
177
  @logger.debug('[validate] -- validating configuration')
165
- has_keys(%w[rabbitmq checks])
178
+ has_keys(%w[checks])
166
179
  validate_common_settings
167
180
  case File.basename($0)
168
181
  when 'rake'
169
- has_keys(%w[redis api handlers client])
182
+ has_keys(%w[api handlers client])
170
183
  validate_server_settings
171
184
  validate_api_settings
172
185
  validate_client_settings
@@ -187,6 +200,9 @@ module Sensu
187
200
  if File.readable?(@options[:config_file])
188
201
  begin
189
202
  config_hash = JSON.parse(File.open(@options[:config_file], 'r').read)
203
+ %w[rabbitmq redis].each do |key|
204
+ config_hash[key] ||= Hash.new
205
+ end
190
206
  rescue JSON::ParserError => error
191
207
  invalid_config('configuration file (' + @options[:config_file] + ') must be valid JSON: ' + error.to_s)
192
208
  end
@@ -220,6 +236,10 @@ module Sensu
220
236
  puts opts
221
237
  exit
222
238
  end
239
+ opts.on('-V', '--version', 'Display version') do
240
+ puts Sensu::VERSION
241
+ exit
242
+ end
223
243
  opts.on('-c', '--config FILE', 'Sensu JSON config FILE. Default is /etc/sensu/config.json') do |file|
224
244
  options[:config_file] = file
225
245
  end
@@ -1,9 +1,23 @@
1
1
  module Redis
2
2
  class Client
3
+ attr_accessor :redis_host, :redis_port, :redis_password
4
+
3
5
  def connection_completed
4
6
  @connected = true
5
7
  @reconnecting = false
6
- @port, @host = Socket.unpack_sockaddr_in(get_peername)
8
+ if @redis_password
9
+ auth(@redis_password).callback do |reply|
10
+ unless reply == "OK"
11
+ raise 'could not authenticate'
12
+ end
13
+ end
14
+ end
15
+ info.callback do |reply|
16
+ redis_version = reply.split(/\n/).first.split(/:/).last
17
+ unless redis_version.to_i >= 2
18
+ raise 'redis version must be >= 2.0'
19
+ end
20
+ end
7
21
  end
8
22
 
9
23
  def close
@@ -15,14 +29,14 @@ module Redis
15
29
  unless !@connected || @closing_connection
16
30
  EM::Timer.new(1) do
17
31
  @reconnecting = true
18
- reconnect(@host, @port)
32
+ reconnect(@redis_host, @redis_port)
19
33
  end
20
34
  else
21
35
  until @queue.empty?
22
- @queue.shift.fail RuntimeError.new 'connection closed'
36
+ @queue.shift.fail RuntimeError.new('connection closed')
23
37
  end
24
38
  unless @connected
25
- raise "could not connect to redis"
39
+ raise 'could not connect to redis'
26
40
  end
27
41
  end
28
42
  end
@@ -35,13 +49,10 @@ module Redis
35
49
  def self.connect(options={})
36
50
  host = options[:host] || 'localhost'
37
51
  port = options[:port] || 6379
38
- redis = EM::connect(host, port, Redis::Client)
39
- redis.info do |info|
40
- redis_version = info.split(/\n/).first.split(/:/).last
41
- unless redis_version.to_i >= 2
42
- raise "redis version must be >= 2.0"
43
- end
52
+ EM::connect(host, port, Redis::Client) do |client|
53
+ client.redis_host = host
54
+ client.redis_port = port
55
+ client.redis_password = options[:password]
44
56
  end
45
- redis
46
57
  end
47
58
  end
@@ -0,0 +1,3 @@
1
+ module Sensu
2
+ VERSION = "0.9.5.beta.3"
3
+ end
data/sensu.gemspec CHANGED
@@ -1,4 +1,4 @@
1
- require File.expand_path("../lib/sensu", __FILE__)
1
+ require File.expand_path("../lib/sensu/version", __FILE__)
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "sensu"
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sensu
3
3
  version: !ruby/object:Gem::Version
4
- hash: 62196255
4
+ hash: 62196253
5
5
  prerelease: true
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
9
  - 5
10
10
  - beta
11
- - 2
12
- version: 0.9.5.beta.2
11
+ - 3
12
+ version: 0.9.5.beta.3
13
13
  platform: ruby
14
14
  authors:
15
15
  - Sean Porter
@@ -18,7 +18,7 @@ autorequire:
18
18
  bindir: bin
19
19
  cert_chain: []
20
20
 
21
- date: 2012-03-06 00:00:00 -08:00
21
+ date: 2012-03-20 00:00:00 -07:00
22
22
  default_executable:
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency
@@ -222,6 +222,7 @@ files:
222
222
  - lib/sensu/patches/redis.rb
223
223
  - lib/sensu/patches/ruby.rb
224
224
  - lib/sensu/server.rb
225
+ - lib/sensu/version.rb
225
226
  - lib/sensu.rb
226
227
  - sensu.gemspec
227
228
  - README.org