sensu 0.9.0.beta.1 → 0.9.0.beta.2
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 +1 -1
- data/lib/sensu/api.rb +1 -0
- data/lib/sensu/config.rb +60 -45
- metadata +3 -3
data/lib/sensu.rb
CHANGED
data/lib/sensu/api.rb
CHANGED
@@ -253,6 +253,7 @@ module Sensu
|
|
253
253
|
|
254
254
|
def self.test(options={})
|
255
255
|
self.setup(options)
|
256
|
+
$settings.client.timestamp = Time.now.to_i
|
256
257
|
$redis.set('client:' + $settings.client.name, $settings.client.to_json).callback do
|
257
258
|
$redis.sadd('clients', $settings.client.name).callback do
|
258
259
|
$redis.hset('events:' + $settings.client.name, 'test', {
|
data/lib/sensu/config.rb
CHANGED
@@ -17,15 +17,14 @@ module Sensu
|
|
17
17
|
class Config
|
18
18
|
attr_accessor :settings, :logger
|
19
19
|
|
20
|
-
SERVICE = File.basename($0).split('-').last
|
21
|
-
|
22
20
|
DEFAULT_OPTIONS = {
|
23
21
|
:log_file => '/tmp/sensu.log',
|
24
22
|
:config_file => '/etc/sensu/config.json',
|
25
23
|
:config_dir => '/etc/sensu/conf.d',
|
26
24
|
:validate => true,
|
25
|
+
:daemonize => false,
|
27
26
|
:pid_file => '/tmp/' + File.basename($0) + '.pid',
|
28
|
-
:
|
27
|
+
:service => File.basename($0)
|
29
28
|
}
|
30
29
|
|
31
30
|
def initialize(options={})
|
@@ -42,7 +41,7 @@ module Sensu
|
|
42
41
|
def open_log
|
43
42
|
@logger = Cabin::Channel.new
|
44
43
|
if File.writable?(@options[:log_file]) || !File.exist?(@options[:log_file]) && File.writable?(File.dirname(@options[:log_file]))
|
45
|
-
ruby_logger = case
|
44
|
+
ruby_logger = case @options[:service]
|
46
45
|
when 'rake'
|
47
46
|
Logger.new(@options[:log_file])
|
48
47
|
else
|
@@ -93,49 +92,27 @@ module Sensu
|
|
93
92
|
@logger.debug('[config] -- validating configuration')
|
94
93
|
end
|
95
94
|
has_keys(%w[rabbitmq])
|
96
|
-
|
97
|
-
|
95
|
+
validate_common_config
|
96
|
+
case @options[:service]
|
97
|
+
when 'rake'
|
98
|
+
has_keys(%w[redis api handlers checks client])
|
99
|
+
validate_server_config
|
100
|
+
validate_client_config
|
101
|
+
when 'sensu-server'
|
98
102
|
has_keys(%w[redis handlers checks])
|
99
|
-
|
100
|
-
|
101
|
-
end
|
102
|
-
@settings.handlers.each do |name, details|
|
103
|
-
unless details.is_a?(Hash)
|
104
|
-
invalid_config('hander details must be a hash ' + name)
|
105
|
-
end
|
106
|
-
unless details.key?('type')
|
107
|
-
invalid_config('missing type for handler ' + name)
|
108
|
-
end
|
109
|
-
case details.type
|
110
|
-
when 'pipe'
|
111
|
-
unless details.key?('command')
|
112
|
-
invalid_config('missing command for pipe handler ' + name)
|
113
|
-
end
|
114
|
-
when 'amqp'
|
115
|
-
unless details.key?('exchange')
|
116
|
-
invalid_config('missing exchange details for amqp handler ' + name)
|
117
|
-
end
|
118
|
-
unless details.exchange.key?('name')
|
119
|
-
invalid_config('missing exchange name for amqp handler ' + name)
|
120
|
-
end
|
121
|
-
else
|
122
|
-
invalid_config('unknown type for handler ' + name)
|
123
|
-
end
|
124
|
-
end
|
125
|
-
when 'api', 'rake'
|
103
|
+
validate_server_config
|
104
|
+
when 'sensu-api'
|
126
105
|
has_keys(%w[redis api])
|
127
|
-
when 'client'
|
106
|
+
when 'sensu-client'
|
128
107
|
has_keys(%w[client checks])
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
invalid_config('client must have an address (ip or hostname)')
|
134
|
-
end
|
135
|
-
unless @settings.client.subscriptions.is_a?(Array) && @settings.client.subscriptions.count > 0
|
136
|
-
invalid_config('client must have subscriptions')
|
137
|
-
end
|
108
|
+
validate_client_config
|
109
|
+
end
|
110
|
+
if @logger
|
111
|
+
@logger.debug('[config] -- configuration valid -- running ' + @options[:service])
|
138
112
|
end
|
113
|
+
end
|
114
|
+
|
115
|
+
def validate_common_config
|
139
116
|
@settings.checks.each do |name, details|
|
140
117
|
unless details.interval.is_a?(Integer) && details.interval > 0
|
141
118
|
invalid_config('missing interval for check ' + name)
|
@@ -157,8 +134,46 @@ module Sensu
|
|
157
134
|
end
|
158
135
|
end
|
159
136
|
end
|
160
|
-
|
161
|
-
|
137
|
+
end
|
138
|
+
|
139
|
+
def validate_server_config
|
140
|
+
unless @settings.handlers.include?('default')
|
141
|
+
invalid_config('missing default handler')
|
142
|
+
end
|
143
|
+
@settings.handlers.each do |name, details|
|
144
|
+
unless details.is_a?(Hash)
|
145
|
+
invalid_config('hander details must be a hash ' + name)
|
146
|
+
end
|
147
|
+
unless details.key?('type')
|
148
|
+
invalid_config('missing type for handler ' + name)
|
149
|
+
end
|
150
|
+
case details.type
|
151
|
+
when 'pipe'
|
152
|
+
unless details.key?('command')
|
153
|
+
invalid_config('missing command for pipe handler ' + name)
|
154
|
+
end
|
155
|
+
when 'amqp'
|
156
|
+
unless details.key?('exchange')
|
157
|
+
invalid_config('missing exchange details for amqp handler ' + name)
|
158
|
+
end
|
159
|
+
unless details.exchange.key?('name')
|
160
|
+
invalid_config('missing exchange name for amqp handler ' + name)
|
161
|
+
end
|
162
|
+
else
|
163
|
+
invalid_config('unknown type for handler ' + name)
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
def validate_client_config
|
169
|
+
unless @settings.client.name.is_a?(String)
|
170
|
+
invalid_config('client must have a name')
|
171
|
+
end
|
172
|
+
unless @settings.client.address.is_a?(String)
|
173
|
+
invalid_config('client must have an address (ip or hostname)')
|
174
|
+
end
|
175
|
+
unless @settings.client.subscriptions.is_a?(Array) && @settings.client.subscriptions.count > 0
|
176
|
+
invalid_config('client must have subscriptions')
|
162
177
|
end
|
163
178
|
end
|
164
179
|
|
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:
|
4
|
+
hash: 62196279
|
5
5
|
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
9
|
- 0
|
10
10
|
- beta
|
11
|
-
-
|
12
|
-
version: 0.9.0.beta.
|
11
|
+
- 2
|
12
|
+
version: 0.9.0.beta.2
|
13
13
|
platform: ruby
|
14
14
|
authors:
|
15
15
|
- Sean Porter
|