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

Как я могу вызвать событие Monit при восстановлении службы?

Учитывая такую ​​конфигурацию:

check host web1 address web1
    if failed host web1 port 80 protocol http
    then exec "/usr/local/bin/failover.sh -h web2"

Могу ли я определить, вернулся ли web1 из состояния сбоя, и выполнить действие «возврат после сбоя»?

Если бы я просто определял, работает ли он, то я бы запускал команду аварийного переключения каждые секунды демона, и я не хочу этого делать, если мне не нужно; он будет предоставлять ненужные записи в журнале и предупреждения.

Спасибо Эрику Пайло за его предложение которые приводят к рабочему ответу:

check host web1 address web1
    if failed host web1 port 80 protocol http
        then exec "/bin/bash -c '/usr/bin/test ! -f /var/tmp/web-failover && ( /usr/local/bin/failover.sh -h web2 ; touch /var/tmp/auth-failover )'"
    else if succeeded
        then exec "/bin/sh -c '/usr/local/bin/failover.sh -h web1 ; rm -f /var/tmp/web-failover)'"

Это странно, но если вы вызовете / bin / bash успешно, похоже, что monit не запустит команду. Я подозреваю, что он думает, что уже выполнил команду, поэтому не беспокоит. Однако, похоже, он не против запускать первую команду снова и снова!