kostya / eye

Process monitoring tool. Inspired from Bluepill and God.
MIT License
1.19k stars 89 forks source link

How to make a process depend on other group of process #224

Closed emanzx closed 4 years ago

emanzx commented 5 years ago

I have this configs below.

Eye.application 'services' do
  check :cpu, every: 10.seconds, below: 100, times: 3 # global check for all processes

    working_dir "/root/"
    stdall "/var/log/eye/trash.log" # stdout,err logs for processes by default
    env 'APP_ENV' => 'development' # global env for each processes
    trigger :flapping, times: 10, within: 1.minute, retry_in: 10.minutes
    chain grace: 5.seconds # chained start-restart with 5s interval, one by one.
    group 'hybrid-fabric' do
         process :tincd do
            pid_file "/var/run/tinc.dnsvnet.pid"
            start_command "service tincd onestart"
            stop_command "service tincd onestop"
            restart_command "service tincd onerestart"
            stdall "/var/log/eye/tincd.log"
            start_timeout 60.seconds
         end
         process :avahi_daemon do
            pid_file "/var/run/avahi-daemon/pid"
            start_command "echo 'avahi started only by tinc'"
            stop_command "echo 'avahi stopped only by tinc'"
            stdall "/var/log/eye/avahi-daemon.log"
            start_timeout 60.seconds
            depend_on :tincd
         end
         process :avahi_autopid do
            pid_file "/var/run/avahi-autoipd.tap0.pid"
            start_command "echo 'avahi-autoipd started only by tinc'"
            stop_command "echo 'avahi-autoipd stopped only by tinc'"
            stdall "/var/log/eye/avahi-autoipd.log"
            start_timeout 60.seconds
            depend_on :tincd         
         end
    end
    process :glusterd do
       pid_file "/var/run/glusterd.pid"
       start_command "service glusterd onestart"
       stop_command "service glusterd onestop"
       restart_command "service glusterd onerestart"
       stdall "/var/log/eye/glusterd.log"
       start_timeout 60.seconds
       depend_on 'hybrid-fabric'
    end
end

I need to start glusterd after group process hybrid-fabric is started. how can I do that? putting on depend_on 'hybrid-fabric' line just give me error blank pid_file for: hybrid_fabric

kostya commented 5 years ago

right now there is no such options, you should set all process names:

depend_on [:tincd, :avahi_daemon, :avahi_autopid]
emanzx commented 5 years ago

I have test the depend_on [:tincd, :avahi_daemon, :avahi_autopid] but the error is still the same.

root@dnsvplatform:~ # eye l /usr/local/etc/eye/eye.conf blank pid_file for: tincd, avahi_daemon, avahi_autopid

Eye.application 'services' do
  check :cpu, every: 10.seconds, below: 100, times: 3 # global check for all processes

    working_dir "/root/"
    stdall "/var/log/eye/trash.log" # stdout,err logs for processes by default
    env 'APP_ENV' => 'development' # global env for each processes
    trigger :flapping, times: 10, within: 1.minute, retry_in: 10.minutes
    chain grace: 5.seconds # chained start-restart with 5s interval, one by one.
    group 'hybrid-fabric' do
         process :tincd do
            pid_file "/var/run/tinc.dnsvnet.pid"
            start_command "service tincd onestart"
            stop_command "service tincd onestop"
            restart_command "service tincd onerestart"
            stdall "/var/log/eye/tincd.log"
            start_timeout 60.seconds
         end
         process :avahi_daemon do
            pid_file "/var/run/avahi-daemon/pid"
            start_command "echo 'avahi started only by tinc'"
            stop_command "echo 'avahi stopped only by tinc'"
            stdall "/var/log/eye/avahi-daemon.log"
            start_timeout 60.seconds
            depend_on :tincd
         end
         process :avahi_autopid do
            pid_file "/var/run/avahi-autoipd.tap0.pid"
            start_command "echo 'avahi-autoipd started only by tinc'"
            stop_command "echo 'avahi-autoipd stopped only by tinc'"
            stdall "/var/log/eye/avahi-autoipd.log"
            start_timeout 60.seconds
            depend_on :tincd
         end
    end
    process :glusterd do
       pid_file "/var/run/glusterd.pid"
       start_command "service glusterd onestart"
       stop_command "service glusterd onestop"
       restart_command "service glusterd onerestart"
       stdall "/var/log/eye/glusterd.log"
       start_timeout 60.seconds
       depend_on [:tincd, :avahi_daemon, :avahi_autopid]
    end
    process :puppetserver do
       pid_file "/var/run/puppetserver/puppetserver.pid"
       start_command "service puppetserver start"
       stop_command "service puppetserver stop"
       restart_command "service puppetserver restart"
       stdall "/var/log/eye/puppetserver.log"
       start_timeout 60.seconds
       #depend_on :tincd
    end
end
kostya commented 5 years ago

oh, yes, this works only in one group, put :glusterd to 'hybrid-fabric' and it should work. depend_on quite experimental stuff.

emanzx commented 5 years ago

okay.