Назад | Перейти на главную страницу

Как сделать Monit «процесс проверки» условным?

У меня есть сценарий мониторинга, который делает что-то вроде этого:

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.