sensu 0.9.12.beta.4 → 0.9.12.beta.5

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  ### Features
4
4
 
5
+ Client check history API endpoint with last execution timestamp.
6
+
5
7
  API can bind to a specific address.
6
8
 
7
9
  Extension stop hook for clean up before the event loop is stopped.
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  A monitoring framework that aims to be simple, malleable, and scalable.
4
4
 
5
- ![travis](https://secure.travis-ci.org/sensu/sensu.png)
5
+ [![Build Status](https://secure.travis-ci.org/sensu/sensu.png)](https://travis-ci.org/sensu/sensu)
6
6
 
7
7
  ## Documentation
8
8
  Please refer to the [Sensu Wiki](https://github.com/sensu/sensu/wiki).
data/lib/sensu/api.rb CHANGED
@@ -253,6 +253,39 @@ module Sensu
253
253
  end
254
254
  end
255
255
 
256
+ aget %r{/clients/([\w\.-]+)/history$} do |client_name|
257
+ response = Array.new
258
+ $redis.smembers('history:' + client_name) do |checks|
259
+ unless checks.empty?
260
+ checks.each_with_index do |check_name, index|
261
+ history_key = 'history:' + client_name + ':' + check_name
262
+ $redis.lrange(history_key, -21, -1) do |history|
263
+ history.map! do |status|
264
+ status.to_i
265
+ end
266
+ execution_key = 'execution:' + client_name + ':' + check_name
267
+ $redis.get(execution_key) do |last_execution|
268
+ unless history.empty? || last_execution.nil?
269
+ item = {
270
+ :check => check_name,
271
+ :history => history,
272
+ :last_execution => last_execution.to_i,
273
+ :last_status => history.last
274
+ }
275
+ response << item
276
+ end
277
+ if index == checks.size - 1
278
+ body Oj.dump(response)
279
+ end
280
+ end
281
+ end
282
+ end
283
+ else
284
+ body Oj.dump(response)
285
+ end
286
+ end
287
+ end
288
+
256
289
  adelete %r{/clients?/([\w\.-]+)$} do |client_name|
257
290
  $redis.get('client:' + client_name) do |client_json|
258
291
  unless client_json.nil?
@@ -271,6 +304,7 @@ module Sensu
271
304
  $redis.smembers('history:' + client_name) do |checks|
272
305
  checks.each do |check_name|
273
306
  $redis.del('history:' + client_name + ':' + check_name)
307
+ $redis.del('execution:' + client_name + ':' + check_name)
274
308
  end
275
309
  $redis.del('history:' + client_name)
276
310
  end
@@ -411,11 +445,11 @@ module Sensu
411
445
  unless checks.empty?
412
446
  checks.each_with_index do |check_name, index|
413
447
  $redis.smembers('aggregates:' + check_name) do |aggregates|
414
- collection = {
448
+ item = {
415
449
  :check => check_name,
416
450
  :issued => aggregates.sort.reverse
417
451
  }
418
- response << collection
452
+ response << item
419
453
  if index == checks.size - 1
420
454
  body Oj.dump(response)
421
455
  end
data/lib/sensu/client.rb CHANGED
@@ -97,6 +97,7 @@ module Sensu
97
97
  unless @checks_in_progress.include?(check[:name])
98
98
  @checks_in_progress << check[:name]
99
99
  command, unmatched_tokens = substitute_command_tokens(check)
100
+ check[:executed] = Time.now.to_i
100
101
  if unmatched_tokens.empty?
101
102
  execute = Proc.new do
102
103
  @logger.debug('executing check command', {
@@ -135,6 +136,7 @@ module Sensu
135
136
  @logger.debug('attempting to run check extension', {
136
137
  :check => check
137
138
  })
139
+ check[:executed] = Time.now.to_i
138
140
  extension = @extensions[:checks][check[:name]]
139
141
  extension.run do |output, status|
140
142
  check[:output] = output
@@ -155,6 +157,7 @@ module Sensu
155
157
  check[:output] = 'Check is not locally defined (safe mode)'
156
158
  check[:status] = 3
157
159
  check[:handle] = false
160
+ check[:executed] = Time.now.to_i
158
161
  publish_result(check)
159
162
  else
160
163
  execute_check_command(check)
@@ -1,6 +1,6 @@
1
1
  module Sensu
2
2
  unless defined?(Sensu::VERSION)
3
- VERSION = '0.9.12.beta.4'
3
+ VERSION = '0.9.12.beta.5'
4
4
 
5
5
  LOG_LEVELS = [:debug, :info, :warn, :error, :fatal]
6
6
 
data/lib/sensu/server.rb CHANGED
@@ -427,6 +427,8 @@ module Sensu
427
427
  @redis.sadd('history:' + client[:name], check[:name])
428
428
  history_key = 'history:' + client[:name] + ':' + check[:name]
429
429
  @redis.rpush(history_key, check[:status]) do
430
+ execution_key = 'execution:' + client[:name] + ':' + check[:name]
431
+ @redis.set(execution_key, check[:executed])
430
432
  @redis.lrange(history_key, -21, -1) do |history|
431
433
  check[:history] = history
432
434
  total_state_change = 0
@@ -584,7 +586,8 @@ module Sensu
584
586
  client = Oj.load(client_json)
585
587
  check = {
586
588
  :name => 'keepalive',
587
- :issued => Time.now.to_i
589
+ :issued => Time.now.to_i,
590
+ :executed => Time.now.to_i
588
591
  }
589
592
  time_since_last_keepalive = Time.now.to_i - client[:timestamp]
590
593
  case
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: 3135244901
4
+ hash: -1667026956
5
5
  prerelease: true
6
6
  segments:
7
7
  - 0
8
8
  - 9
9
9
  - 12
10
10
  - beta
11
- - 4
12
- version: 0.9.12.beta.4
11
+ - 5
12
+ version: 0.9.12.beta.5
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: 2013-03-08 00:00:00 -08:00
21
+ date: 2013-03-14 00:00:00 -07:00
22
22
  default_executable:
23
23
  dependencies:
24
24
  - !ruby/object:Gem::Dependency