Class: SrvManager::Monitor

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#pidObject (readonly)

Returns the value of attribute pid.



4
5
6
# File 'lib/srv_manager/monitor.rb', line 4

def pid
  @pid
end

Instance Method Details

#alive?Boolean

Returns:

  • (Boolean)


26
27
28
29
30
# File 'lib/srv_manager/monitor.rb', line 26

def alive?
  pid && ::Process.kill(0, pid) ? true : false
rescue Errno::ESRCH
  false
end

#keep_alive(service) ⇒ Object



32
33
34
35
36
37
38
39
40
41
# File 'lib/srv_manager/monitor.rb', line 32

def keep_alive(service)
  service.processes.each do |process|
    LOGGER.info "Monitoring service: #{service.name} (#{process.id || 'stoped'})"
    if !process.started? && service.auto
      process.start
    elsif process.started? && !process.alive? 
      process.restart 
    end
  end
end

#start(sleep_time = 60) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/srv_manager/monitor.rb', line 6

def start(sleep_time=60)
  @pid = ::Process.fork do
    sleep 1
    loop do
      Context.scoped do |ctx|
        ctx.services.each do |service|
          keep_alive service
        end
      end
      sleep sleep_time
    end
  end
  ::Process.detach @pid
end

#stopObject



21
22
23
24
# File 'lib/srv_manager/monitor.rb', line 21

def stop
  ::Process.kill 9, pid if pid
rescue Errno::ESRCH
end