sensu 0.7.2-x86-mingw32 → 0.8.0-x86-mingw32
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 +6 -5
- data/Rakefile +6 -3
- data/lib/sensu.rb +1 -1
- data/lib/sensu/client.rb +65 -9
- data/lib/sensu/config.rb +1 -1
- data/sensu.gemspec +5 -4
- metadata +5 -5
data/Gemfile.lock
CHANGED
@@ -1,13 +1,14 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
sensu (0.
|
4
|
+
sensu (0.8.0)
|
5
5
|
amqp (= 0.7.4)
|
6
6
|
async_sinatra
|
7
7
|
em-hiredis
|
8
8
|
em-syslog
|
9
9
|
hashie
|
10
10
|
json
|
11
|
+
rack (~> 1.3.4)
|
11
12
|
thin
|
12
13
|
uuidtools
|
13
14
|
|
@@ -30,12 +31,12 @@ GEM
|
|
30
31
|
callsite (~> 0.0.5)
|
31
32
|
eventmachine
|
32
33
|
eventmachine (0.12.10)
|
33
|
-
hashie (1.
|
34
|
+
hashie (1.2.0)
|
34
35
|
hiredis (0.3.2)
|
35
36
|
json (1.6.1)
|
36
37
|
mime-types (1.16)
|
37
|
-
minitest (2.
|
38
|
-
rack (1.3.
|
38
|
+
minitest (2.7.0)
|
39
|
+
rack (1.3.5)
|
39
40
|
rack-protection (1.1.4)
|
40
41
|
rack
|
41
42
|
rake (0.9.2)
|
@@ -57,7 +58,7 @@ PLATFORMS
|
|
57
58
|
|
58
59
|
DEPENDENCIES
|
59
60
|
em-ventually
|
60
|
-
minitest
|
61
|
+
minitest (~> 2.7.0)
|
61
62
|
rake
|
62
63
|
rest-client
|
63
64
|
sensu!
|
data/Rakefile
CHANGED
@@ -1,10 +1,13 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
|
-
require 'rake/testtask'
|
3
2
|
|
4
3
|
task :default => 'test'
|
5
4
|
|
6
|
-
|
7
|
-
|
5
|
+
desc "Run tests"
|
6
|
+
task :test do
|
7
|
+
require File.join(File.dirname(__FILE__), 'test', 'helper')
|
8
|
+
Dir['test/*_test.rb'].each do |test|
|
9
|
+
require File.join(File.dirname(__FILE__), test)
|
10
|
+
end
|
8
11
|
end
|
9
12
|
|
10
13
|
desc "Build Sensu for Windows"
|
data/lib/sensu.rb
CHANGED
data/lib/sensu/client.rb
CHANGED
@@ -9,13 +9,15 @@ module Sensu
|
|
9
9
|
client.setup_keepalives
|
10
10
|
client.setup_subscriptions
|
11
11
|
client.setup_queue_monitor
|
12
|
+
client.setup_socket
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
%w[INT TERM].each do |signal|
|
15
|
+
Signal.trap(signal) do
|
16
|
+
EM.warning('[process] -- ' + signal + ' -- stopping sensu client')
|
17
|
+
EM.add_timer(1) do
|
18
|
+
EM.stop
|
19
|
+
end
|
20
|
+
end
|
19
21
|
end
|
20
22
|
end
|
21
23
|
end
|
@@ -23,24 +25,32 @@ module Sensu
|
|
23
25
|
def initialize(options={})
|
24
26
|
config = Sensu::Config.new(:config_file => options[:config_file])
|
25
27
|
@settings = config.settings
|
28
|
+
EM.syslog_setup(@settings.syslog.host, @settings.syslog.port)
|
26
29
|
end
|
27
30
|
|
28
31
|
def setup_amqp
|
32
|
+
EM.debug("[amqp] -- connecting to rabbitmq")
|
29
33
|
connection = AMQP.connect(@settings.rabbitmq.to_hash.symbolize_keys)
|
30
34
|
@amq = MQ.new(connection)
|
31
35
|
end
|
32
36
|
|
37
|
+
def publish_keepalive
|
38
|
+
EM.debug('[keepalive] -- publishing keepalive -- ' + @settings.client.timestamp.to_s)
|
39
|
+
@keepalive_queue ||= @amq.queue('keepalives')
|
40
|
+
@keepalive_queue.publish(@settings.client.to_json)
|
41
|
+
end
|
42
|
+
|
33
43
|
def setup_keepalives
|
34
|
-
keepalive_queue = @amq.queue('keepalives')
|
35
44
|
@settings.client.timestamp = Time.now.to_i
|
36
|
-
|
45
|
+
publish_keepalive
|
37
46
|
EM.add_periodic_timer(30) do
|
38
47
|
@settings.client.timestamp = Time.now.to_i
|
39
|
-
|
48
|
+
publish_keepalive
|
40
49
|
end
|
41
50
|
end
|
42
51
|
|
43
52
|
def publish_result(check)
|
53
|
+
EM.info('[result] -- publishing check result -- ' + check.name)
|
44
54
|
@result_queue ||= @amq.queue('results')
|
45
55
|
@result_queue.publish({
|
46
56
|
:client => @settings.client.name,
|
@@ -72,6 +82,7 @@ module Sensu
|
|
72
82
|
end
|
73
83
|
EM.defer(execute, publish)
|
74
84
|
else
|
85
|
+
EM.warning('[execute] -- missing client attributes -- ' + unmatched_tokens.join(', ') + ' -- ' + check.name)
|
75
86
|
check.status = 3
|
76
87
|
check.output = 'Missing client attributes: ' + unmatched_tokens.join(', ')
|
77
88
|
check.internal = true
|
@@ -80,6 +91,7 @@ module Sensu
|
|
80
91
|
end
|
81
92
|
end
|
82
93
|
else
|
94
|
+
EM.warning('[execute] -- unkown check -- ' + check.name)
|
83
95
|
check.status = 3
|
84
96
|
check.output = 'Unknown check'
|
85
97
|
check.internal = true
|
@@ -91,10 +103,12 @@ module Sensu
|
|
91
103
|
def setup_subscriptions
|
92
104
|
@check_queue = @amq.queue(UUIDTools::UUID.random_create.to_s, :exclusive => true)
|
93
105
|
@settings.client.subscriptions.each do |exchange|
|
106
|
+
EM.debug('[subscribe] -- queue binding to exchange -- ' + exchange)
|
94
107
|
@check_queue.bind(@amq.fanout(exchange))
|
95
108
|
end
|
96
109
|
@check_queue.subscribe do |check_json|
|
97
110
|
check = Hashie::Mash.new(JSON.parse(check_json))
|
111
|
+
EM.info('[subscribe] -- received check -- ' + check.name)
|
98
112
|
execute_check(check)
|
99
113
|
end
|
100
114
|
end
|
@@ -102,6 +116,7 @@ module Sensu
|
|
102
116
|
def setup_queue_monitor
|
103
117
|
EM.add_periodic_timer(5) do
|
104
118
|
unless @check_queue.subscribed?
|
119
|
+
EM.warning('[monitor] -- reconnecting to rabbitmq')
|
105
120
|
@check_queue.delete
|
106
121
|
EM.add_timer(1) do
|
107
122
|
setup_subscriptions
|
@@ -109,5 +124,46 @@ module Sensu
|
|
109
124
|
end
|
110
125
|
end
|
111
126
|
end
|
127
|
+
|
128
|
+
def setup_socket
|
129
|
+
EM.debug('[socket] -- starting up socket server')
|
130
|
+
EM.start_server('127.0.0.1', 3030, ClientSocket) do |socket|
|
131
|
+
socket.client_name = @settings.client.name
|
132
|
+
socket.result_queue = @amq.queue('results')
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
class ClientSocket < EM::Connection
|
138
|
+
attr_accessor :client_name, :result_queue
|
139
|
+
|
140
|
+
def post_init
|
141
|
+
EM.debug('[socket] -- client connected')
|
142
|
+
end
|
143
|
+
|
144
|
+
def receive_data(data)
|
145
|
+
begin
|
146
|
+
check = Hashie::Mash.new(JSON.parse(data))
|
147
|
+
validates = %w[name status output].all? do |key|
|
148
|
+
check.key?(key)
|
149
|
+
end
|
150
|
+
if validates
|
151
|
+
EM.info('[socket] -- publishing check result -- ' + check.name)
|
152
|
+
@result_queue.publish({
|
153
|
+
:client => @client_name,
|
154
|
+
:check => check.to_hash
|
155
|
+
}.to_json)
|
156
|
+
else
|
157
|
+
EM.warning('[socket] -- a check name, exit status, and output are required -- e.g. {name: x, status: 0, output: "y"}')
|
158
|
+
end
|
159
|
+
rescue JSON::ParserError
|
160
|
+
EM.warning('[socket] -- could not parse check result -- expecting JSON')
|
161
|
+
end
|
162
|
+
close_connection
|
163
|
+
end
|
164
|
+
|
165
|
+
def unbind
|
166
|
+
EM.debug('[socket] -- client disconnected')
|
167
|
+
end
|
112
168
|
end
|
113
169
|
end
|
data/lib/sensu/config.rb
CHANGED
@@ -48,7 +48,7 @@ module Sensu
|
|
48
48
|
exit
|
49
49
|
end
|
50
50
|
current_process = $0.split('/').last
|
51
|
-
if current_process == 'sensu-server' || current_process == '
|
51
|
+
if current_process == 'sensu-server' || current_process == 'rake'
|
52
52
|
options[:worker] = false
|
53
53
|
opts.on('-w', '--worker', 'Only consume jobs, no check publishing (default: false)') do
|
54
54
|
options[:worker] = true
|
data/sensu.gemspec
CHANGED
@@ -18,13 +18,14 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.add_dependency("uuidtools")
|
19
19
|
s.add_dependency("em-syslog")
|
20
20
|
s.add_dependency("em-hiredis")
|
21
|
+
s.add_dependency("rack", "~> 1.3.4")
|
21
22
|
s.add_dependency("async_sinatra")
|
22
23
|
s.add_dependency("thin")
|
23
24
|
|
24
|
-
s.add_development_dependency(
|
25
|
-
s.add_development_dependency(
|
26
|
-
s.add_development_dependency(
|
27
|
-
s.add_development_dependency(
|
25
|
+
s.add_development_dependency("rake")
|
26
|
+
s.add_development_dependency("minitest", "~> 2.7.0")
|
27
|
+
s.add_development_dependency("em-ventually")
|
28
|
+
s.add_development_dependency("rest-client")
|
28
29
|
|
29
30
|
s.files = `git ls-files`.split("\n").reject {|f| f =~ /(dist|test|png)/}
|
30
31
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
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: 63
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 8
|
9
|
+
- 0
|
10
|
+
version: 0.8.0
|
11
11
|
platform: x86-mingw32
|
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-10-
|
19
|
+
date: 2011-10-31 00:00:00 -07:00
|
20
20
|
default_executable:
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|