class EzNemo::Reactor

EventMachine reactor

Public Class Methods

new(opts) click to toggle source

Usually called by self.run!

# 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
run!(opts) click to toggle source

Start reactor @param opts [Hash] from command line @return [Object]

# File lib/eznemo.rb, line 14
def self.run!(opts)
  r = Reactor.new(opts)
  r.run
  r
end

Public Instance Methods

run() click to toggle source

Usually called by self.run!

# 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