Class: EmeterGomDaemon::Daemon

Inherits:
Object
  • Object
show all
Defined in:
lib/e-meter-gom-daemon/daemon.rb

Constant Summary collapse

Defaults =
{
  :logfile => '-',
  :interval => 5,
  :threshold => 5, # in percent
  :nagios_port => 9918,
  :stealth => false,
}

Instance Method Summary collapse

Constructor Details

#initialize(sensor_url, options = {}) ⇒ Daemon

option precedence is:

1. commands line options
2. GOM Sensor node values
3. built-in Default values (see #Defaults)


17
18
19
20
21
22
23
24
25
# File 'lib/e-meter-gom-daemon/daemon.rb', line 17

def initialize sensor_url, options = {}
  @sensor_url = sensor_url
  @gom, @sensor_path = (Gom::Remote::Connection.init @sensor_url)

  @options = Defaults.merge(gnode(@sensor_path)).merge(options)
  puts "options: #{@options.inspect}"

  redirect_to logfile
end

Instance Method Details

#emeter_ipObject



35
36
37
# File 'lib/e-meter-gom-daemon/daemon.rb', line 35

def emeter_ip
  @emeter_ip ||= @options[:emeter_ip]
end

#intervalObject



31
32
33
# File 'lib/e-meter-gom-daemon/daemon.rb', line 31

def interval 
  @interval ||= Integer(@options[:interval])
end

#logfileObject



27
28
29
# File 'lib/e-meter-gom-daemon/daemon.rb', line 27

def logfile
  @logfile ||= @options[:logfile]
end

#nagios_portObject



39
40
41
# File 'lib/e-meter-gom-daemon/daemon.rb', line 39

def nagios_port
  @nagios_port ||= @options[:nagios_port]
end

#runObject



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/e-meter-gom-daemon/daemon.rb', line 51

def run
  run_nagios_thread # become visible to nagios
  gom_checkin
  loop do
    begin
      tic
    rescue Exception => e
      callstack = "#{e.backtrace.join "\n    "}"
      puts " ## #{self} - #{e}\n -> #{callstack}"
    ensure
      sleep interval
    end
  end
ensure
  stop_nagios_thread
end

#stealth?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/e-meter-gom-daemon/daemon.rb', line 47

def stealth?
  @stealth ||= @options[:stealth]
end

#thresholdObject



43
44
45
# File 'lib/e-meter-gom-daemon/daemon.rb', line 43

def threshold
  @threshold ||= Float(@options[:threshold])
end