У меня есть служба, отслеживаемая с помощью monit, и я хотел бы перезапустить ее, если она соответствует одному из двух различных условий:
Вот пример конфигурации monit, которая будет обрабатывать первый случай:
check process myservice with pidfile /var/run/myscript.pid
start = "/bin/systemctl start myservice.service"
stop = "/bin/systemctl stop myservice.service"
if mem usage > 10% for 3 cycles then restart
И файл конфигурации, который будет обрабатывать последний случай (я думаю - на самом деле не тестировал это):
check process myservice with pidfile /var/run/myscript.pid
every "* 4-6 * * *"
start = "/bin/systemctl start myservice.service"
stop = "/bin/systemctl stop myservice.service"
if mem usage > 5% for 3 cycles then restart
Но как мне совместить эти два условия?
(Справочная информация о варианте использования: ожидается, что служба будет медленно увеличивать объем оперативной памяти при нормальном использовании, скажем, на 1% в день, но перезапуск будет несколько мешающим в течение периода, в течение которого служба фактически используется, то есть в дневное время. Таким образом, во втором случае обрабатываются ожидаемые периодические перезапуски службы в ночное время. Первый случай предназначен для непредвиденных патологических сценариев, когда использование оперативной памяти быстро увеличивается.)