Monit выполняется только один раз

В настоящее время Monit выполняется один раз. Я вижу в файле журнала, что он выполняет проверку каждый цикл, однако выполнение происходит только один раз, когда я перезагружаю monit.

check host somehost with address example.com
# every "* 8-19 * * 1-5"
 if failed
    port 443
    protocol https
    and certificate valid > 1095 days
 then exec "/var/local/bin/mtCert.sh"

person Adilp    schedule 06.05.2019    source источник


Ответы (1)


Monit основан на triggers, в основном он только отслеживает изменения.

Таким образом, если настроенное состояние не меняется, monit по умолчанию не будет снова запускать сценарий. См. примечание к версии 5.16.0 в разделе Журнал изменений:

Исправлено: действие exec теперь выполняется только один раз при изменении состояния, так же, как и действие предупреждения. Новая опция повтора может использоваться для повторения действия exec после заданного количества циклов, если ошибка сохраняется. Синтаксис:

if <test> then exec <script> [repeat every [x] cycle(s)]

Если вы хотите старое поведение, используйте «повторять каждый цикл». Пример:

if failed port 1234 then exec "/usr/bin/myscript.sh" repeat every cycle

Поэтому, если вам действительно нужно, чтобы скрипт вызывался несколько раз, просто добавьте repeat:

check host somehost with address example.com
# every "* 8-19 * * 1-5"
  if failed
    port 443
    protocol https
    and certificate valid > 1095 days
  then exec "/var/local/bin/mtCert.sh"
  and repeat every 10 cycles
person boppy    schedule 09.06.2019