sensu 0.9.13 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +23 -0
- data/README.md +1 -1
- data/lib/sensu/client.rb +7 -14
- data/lib/sensu/constants.rb +1 -1
- data/lib/sensu/extensions/handlers/debug.rb +1 -1
- data/lib/sensu/io.rb +1 -1
- data/lib/sensu/server.rb +5 -17
- data/lib/sensu/settings.rb +5 -4
- data/lib/sensu/utilities.rb +11 -0
- metadata +5 -5
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,26 @@
|
|
1
|
+
## 0.10.0 - 2013-06-27
|
2
|
+
|
3
|
+
### Non-backwards compatible changes
|
4
|
+
|
5
|
+
Client & check names must not contain spaces or special characters.
|
6
|
+
The valid characters are: a-z, A-Z, 0-9, "_", ".", and "-".
|
7
|
+
|
8
|
+
"command_executed" was removed from check results, as it may contain
|
9
|
+
sensitive information, such as credentials.
|
10
|
+
|
11
|
+
### Feature
|
12
|
+
|
13
|
+
Passwords in client data (keepalives) and log events are replaced with
|
14
|
+
"REDACTED", reducing the possibility of exposure. The following
|
15
|
+
attributes will have their values replaced: "password", "passwd", and
|
16
|
+
"pass".
|
17
|
+
|
18
|
+
### Other
|
19
|
+
|
20
|
+
Fixed nil check status when check does not exit.
|
21
|
+
|
22
|
+
Fixed the built-in debug handler output encoding (JSON).
|
23
|
+
|
1
24
|
## 0.9.13 - 2013-05-20
|
2
25
|
|
3
26
|
### Features
|
data/README.md
CHANGED
@@ -5,7 +5,7 @@ A monitoring framework that aims to be simple, malleable, and scalable.
|
|
5
5
|
[![Build Status](https://secure.travis-ci.org/sensu/sensu.png)](https://travis-ci.org/sensu/sensu)
|
6
6
|
|
7
7
|
## Documentation
|
8
|
-
Please refer to the [Sensu
|
8
|
+
Please refer to the [Sensu Docs](http://docs.sensuapp.org/).
|
9
9
|
|
10
10
|
## License
|
11
11
|
Sensu is released under the [MIT license](https://raw.github.com/sensu/sensu/master/MIT-LICENSE.txt).
|
data/lib/sensu/client.rb
CHANGED
@@ -47,7 +47,8 @@ module Sensu
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def publish_keepalive
|
50
|
-
|
50
|
+
keepalive = @settings[:client].merge(:timestamp => Time.now.to_i)
|
51
|
+
payload = redact_passwords(keepalive)
|
51
52
|
@logger.debug('publishing keepalive', {
|
52
53
|
:payload => payload
|
53
54
|
})
|
@@ -103,7 +104,6 @@ module Sensu
|
|
103
104
|
command, unmatched_tokens = substitute_command_tokens(check)
|
104
105
|
check[:executed] = Time.now.to_i
|
105
106
|
if unmatched_tokens.empty?
|
106
|
-
check[:command_executed] = command
|
107
107
|
execute = Proc.new do
|
108
108
|
@logger.debug('executing check command', {
|
109
109
|
:check => check
|
@@ -189,18 +189,11 @@ module Sensu
|
|
189
189
|
queue.bind(@amq.fanout(exchange_name))
|
190
190
|
end
|
191
191
|
queue.subscribe do |payload|
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
process_check(check)
|
198
|
-
rescue Oj::ParseError => error
|
199
|
-
@logger.warn('check request payload must be valid json', {
|
200
|
-
:payload => payload,
|
201
|
-
:error => error.to_s
|
202
|
-
})
|
203
|
-
end
|
192
|
+
check = Oj.load(payload)
|
193
|
+
@logger.info('received check request', {
|
194
|
+
:check => check
|
195
|
+
})
|
196
|
+
process_check(check)
|
204
197
|
end
|
205
198
|
end
|
206
199
|
end
|
data/lib/sensu/constants.rb
CHANGED
data/lib/sensu/io.rb
CHANGED
data/lib/sensu/server.rb
CHANGED
@@ -282,6 +282,7 @@ module Sensu
|
|
282
282
|
:mutator => mutator,
|
283
283
|
:error => error.to_s
|
284
284
|
})
|
285
|
+
@handlers_in_progress_count -= 1
|
285
286
|
end
|
286
287
|
execute_command(mutator[:command], Oj.dump(event), on_error) do |output, status|
|
287
288
|
if status == 0
|
@@ -298,15 +299,17 @@ module Sensu
|
|
298
299
|
else
|
299
300
|
@logger.error('mutator error', {
|
300
301
|
:event => event,
|
301
|
-
:extension => extension,
|
302
|
+
:extension => extension.definition,
|
302
303
|
:error => 'non-zero exit status (' + status.to_s + '): ' + output
|
303
304
|
})
|
305
|
+
@handlers_in_progress_count -= 1
|
304
306
|
end
|
305
307
|
end
|
306
308
|
else
|
307
309
|
@logger.error('unknown mutator', {
|
308
310
|
:mutator_name => mutator_name
|
309
311
|
})
|
312
|
+
@handlers_in_progress_count -= 1
|
310
313
|
end
|
311
314
|
end
|
312
315
|
|
@@ -502,19 +505,6 @@ module Sensu
|
|
502
505
|
end
|
503
506
|
end
|
504
507
|
|
505
|
-
def valid_result?(result)
|
506
|
-
if result[:client].is_a?(String) && result[:check].is_a?(Hash)
|
507
|
-
result[:check][:name].is_a?(String) &&
|
508
|
-
result[:check][:output].is_a?(String) &&
|
509
|
-
result[:check][:status].is_a?(Integer)
|
510
|
-
else
|
511
|
-
@logger.warn('invalid result', {
|
512
|
-
:result => result
|
513
|
-
})
|
514
|
-
false
|
515
|
-
end
|
516
|
-
end
|
517
|
-
|
518
508
|
def setup_results
|
519
509
|
@logger.debug('subscribing to results')
|
520
510
|
@result_queue = @amq.queue!('results')
|
@@ -524,9 +514,7 @@ module Sensu
|
|
524
514
|
@logger.debug('received result', {
|
525
515
|
:result => result
|
526
516
|
})
|
527
|
-
|
528
|
-
process_result(result)
|
529
|
-
end
|
517
|
+
process_result(result)
|
530
518
|
EM::next_tick do
|
531
519
|
header.ack
|
532
520
|
end
|
data/lib/sensu/settings.rb
CHANGED
@@ -87,9 +87,10 @@ module Sensu
|
|
87
87
|
config = Oj.load(contents)
|
88
88
|
merged = deep_merge(@settings, config)
|
89
89
|
unless @loaded_files.empty?
|
90
|
+
changes = deep_diff(@settings, merged)
|
90
91
|
@logger.warn('config file applied changes', {
|
91
92
|
:config_file => file,
|
92
|
-
:changes =>
|
93
|
+
:changes => redact_passwords(changes)
|
93
94
|
})
|
94
95
|
end
|
95
96
|
@settings = merged
|
@@ -210,7 +211,7 @@ module Sensu
|
|
210
211
|
end
|
211
212
|
|
212
213
|
def validate_check(check)
|
213
|
-
unless check[:name] =~ /^[\w
|
214
|
+
unless check[:name] =~ /^[\w\.-]+$/
|
214
215
|
invalid_check(check, 'check name cannot contain spaces or special characters')
|
215
216
|
end
|
216
217
|
unless (check[:interval].is_a?(Integer) && check[:interval] > 0) || !check[:publish]
|
@@ -379,8 +380,8 @@ module Sensu
|
|
379
380
|
unless @settings[:client].is_a?(Hash)
|
380
381
|
invalid('missing client configuration')
|
381
382
|
end
|
382
|
-
unless @settings[:client][:name]
|
383
|
-
invalid('client must have a name')
|
383
|
+
unless @settings[:client][:name] =~ /^[\w\.-]+$/
|
384
|
+
invalid('client must have a name and it cannot contain spaces or special characters')
|
384
385
|
end
|
385
386
|
unless @settings[:client][:address].is_a?(String)
|
386
387
|
invalid('client must have an address')
|
data/lib/sensu/utilities.rb
CHANGED
@@ -57,5 +57,16 @@ module Sensu
|
|
57
57
|
diff
|
58
58
|
end
|
59
59
|
end
|
60
|
+
|
61
|
+
def redact_passwords(hash)
|
62
|
+
hash.each do |key, value|
|
63
|
+
if %w[password passwd pass].include?(key.to_s)
|
64
|
+
hash[key] = "REDACTED"
|
65
|
+
elsif value.is_a?(Hash)
|
66
|
+
hash[key] = redact_passwords(value)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
hash
|
70
|
+
end
|
60
71
|
end
|
61
72
|
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: 55
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 10
|
9
|
+
- 0
|
10
|
+
version: 0.10.0
|
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: 2013-
|
19
|
+
date: 2013-06-27 00:00:00 -07:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|