Class: EzNemo::Reactor

Inherits:
Object
  • Object
show all
Defined in:
lib/eznemo.rb

Overview

EventMachine reactor

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(opts) ⇒ Reactor

Usually called by #self.run!



21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/eznemo.rb', line 21

def initialize(opts)
  c = EzNemo.load_config(opts[:config])
  p = c[:probe]
  EzNemo.logger = eval(p[:logger]) if p[:logger].class == String
  logger = EzNemo.logger
  logger.level = eval(p[:log_level]) if p[:log_level].class == String
  logger.debug 'Loading datastore adapter...'
  require "eznemo/#{c[:datastore][:type]}"
  require 'eznemo/datastore'
  logger.debug 'Loading monitoring plugins...'
  require 'eznemo/monitor'
  require 'eznemo/monitor/ping'
end

Class Method Details

.run!(opts) ⇒ Object

Start reactor

Parameters:

  • opts (Hash)

    from command line

Returns:

  • (Object)


14
15
16
17
18
# File 'lib/eznemo.rb', line 14

def self.run!(opts)
  r = Reactor.new(opts)
  r.run
  r
end

Instance Method Details

#runObject

Usually called by #self.run!



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/eznemo.rb', line 36

def run
  logger = EzNemo.logger
  ds = EzNemo.datastore

  Signal.trap('INT') do
    puts 'Interrupted.'
    ds.flush
    exit
  end

  Signal.trap('SIGTERM') do
    puts 'Stopping...'
    ds.flush
    exit
  end
  
  EM.run do
    logger.debug 'Loading checks...'
    EzNemo.monitor.start_checks(ds.checks)
    ds.start_loop
  end
end