Кажется, что Monit отказывается перезапускать службу, если она несколько раз дает сбой, и не отслеживает ее. Я не могу найти в документации ничего о том, когда и почему.
Моя конфигурация Monit будет настроена следующим образом:
set daemon 10
set logfile /var/log/monit.log
set statefile /var/lib/monit/monit.state
set alert foo@example.com not { nonexist, action, instance }
include /etc/monit/conf.d/*
А это пример набора правил Monit, который я использую:
check process myservice
with pidfile /var/run/myservice/myservice.pid
start program = "/home/myservice/current/start-myservice.sh"
as uid myservice and gid myservice
stop program = "/home/myservice/current/stop-myservice.sh"
as uid myservice and gid myservice
mode active
В моем окружении я хочу, чтобы он продолжал пробовать интервалы опроса бесконечно. Есть ли способ настроить monit на никогда прекратить мониторинг службы, даже если она не запускается?
Я бы просто использовал задание cron, которое запускало бы monit start servicename
с желаемыми интервалами. Конечно, вы можете использовать группы для более точного управления.
Покопавшись, выясняется, что Monit хранит данные системного мониторинга в файле «состояния». И этот файл «состояния» отслеживает, какие службы отслеживаются / не отслеживаются.
Так что, хотя это немного «грубая сила», это определенно работает. Если служба становится «неконтролируемой» из-за чего-то вроде тайм-аута, просто удалите файл состояния Monit из системы следующим образом:
sudo rm /var/lib/monit/state
А затем перезапустите Monit вот так, и все должно быть хорошо:
sudo service monit restart
У меня была точно такая же проблема, когда, несмотря на перезапуск monit, он отказывался отслеживать после тайм-аута. Наконец выяснилось, что пришлось удалить файл состояния монитора (/var/.monit.state
) и перезапустите monit, чтобы снова запустить мониторинг всех программ.
Судя по фрагменту кода Monit, похоже, что вам нужно изменить или добавить операторы цикла в раздел вашего процесса. Увидеть соответствующая документация здесь и Вот.
Похоже, вы можете настроить тесты службы на выполнение каждого цикла без указания времени ожидания. Также загляните на свою домашнюю страницу monit по адресу http: // имя хоста: 2812. Check the page for the relevant service and look at
поле «Существование». Ваш вариант по умолчанию должен выглядеть так:
If doesn't exist 1 times within 1 cycle(s) then restart else if succeeded 1 times within 1 cycle(s) then alert