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

Перезапустите службу Monit при нескольких условиях

У меня есть служба, отслеживаемая с помощью monit, и я хотел бы перезапустить ее, если она соответствует одному из двух различных условий:

  1. если использование памяти> 15%
  2. если использование памяти> 5% И текущее системное время находится между 4 и 6 часами утра.

Вот пример конфигурации 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% в день, но перезапуск будет несколько мешающим в течение периода, в течение которого служба фактически используется, то есть в дневное время. Таким образом, во втором случае обрабатываются ожидаемые периодические перезапуски службы в ночное время. Первый случай предназначен для непредвиденных патологических сценариев, когда использование оперативной памяти быстро увеличивается.)