У меня есть сценарий мониторинга, который делает что-то вроде этого:
check process sidekiq_1 with pidfile /tmp/pids/sidekiq_1.pid
start program = "/bin/bash -l -c 'bundle exec sidekiq start" as uid jim and gid jim with timeout 250 seconds
stop program = "/bin/bash -l -c 'bundle exec sidekiq stop" as uid jim and gid jim with timeout 120 seconds
if cpu usage > 25% for 18 cycles then restart
if mem > 1500.0 MB for 18 cycles then restart
Это здорово, однако мне нужно, чтобы проверка была условной на основе существования файла триггера, например:
Выполняйте проверку (запускайте процесс), только если файл /tmp/do_not_start_sidekiq.txt НЕ присутствует.
Таким образом я мог бы сделать touch /tmp/do_not_start_sidekiq.txt
если бы я хотел закрыть процессы и не запускать их снова, пока я не rm /tmp/do_not_start_sidekiq.txt
Как мне изменить этот сценарий мониторинга, чтобы добиться такого поведения?
В право способ справиться с этим с помощью monit - "не отслеживать" процесс ...
Пример:
monit unmonitor sidekiq_1
Не будет пытаться перезапустить или сообщить о проблеме с процессом.
Вы можете восстановить мониторинг проверки с помощью:
monit monitor sidekiq_1
Они также могут быть сгруппированы или запущены cron. Хорошее реальное развертывание может включать мониторинг приложений в рабочее время и неконтролируемые во время окон простоя, контролируемых cron ...
################################################################################
# Shutdown Cucumber
################################################################################
01 15 * * 1-5 monit unmonitor `/bin/hostname`
50 23 * * 0-5 monit -g servers stop all
51 23 * * 0-5 monit -g base stop all
52 23 * * 0-5 monit stop all
Редактировать:
Если вам нужен непривилегированный пользователь, чтобы контролировать это поведение, вы можете использовать /etc/sudoers
записи для monit unmonitor/monitor
команды.
Что-то вроде:
jim ALL=NOPASSWD: /usr/bin/monit unmonitor sidekiq_1
Позволит запускать эту конкретную команду вашему непривилегированному пользователю jim.