Итак, я пытался заставить Monit запускать скрипт при запуске службы. Хотя у Monit нет проблем с перезапуском службы, я, конечно, хочу получать уведомления, когда моя служба требует запуска, а не только когда она не работает на неопределенное время.
Вот мой файл /etc/monit/conf.d/nginx.pid:
check process nginx with pidfile /var/run/nginx.pid
start program = "/usr/sbin/service nginx start"
stop program = "/usr/sbin/service nginx stop"
if failed host 127.0.0.1 port 8080 then restart
if changed pid then exec "/etc/monit/slack.rb"
if failed host 127.0.0.1 port 8080 then exec "/etc/monit/slack.rb" else if succeeded then exec "/etc/monit/slack.rb"
if cpu is greater than 40% for 2 cycles then exec "/etc/monit/slack.rb" else if succeeded then exec "/etc/monit/slack.rb"
if cpu > 60% for 5 cycles then restart
Прямо сейчас monit запустит мой сценарий slack.rb, если я изменю порт на другой порт, на котором nginx не работает (поэтому он, очевидно, не может подключиться), но он не будет запускать его, когда nginx остановлен, но затем запущен Монит. Последний сценарий - это то, что мне нужно для работы.
Спасибо за любую помощь!
Я заставил это работать так:
check process nginx with pidfile /var/run/nginx.pid
start program = "/usr/sbin/service nginx start"
stop program = "/usr/sbin/service nginx stop"
IF does not exist THEN restart ELSE IF SUCCEEDED THEN exec "/etc/monit/slack.rb"
IF failed host 127.0.0.1 port 8080 THEN restart ELSE IF SUCCEEDED THEN exec "/etc/monit/slack.rb"