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

Оповещение об одновременном отказе нескольких сервисов мониторинга

Мы используем Monit для проверки наших веб-серверов. Когда проверка завершается неудачно (или успешно), соответствующий компонент на странице состояния обновляется с помощью сценария оболочки, подобного этому:

check host web-a-https with address web-a.company.local
  if failed
    port 443
    protocol https
    request /ping.php
    content = "OK"
    with ssl options {verify: enable}
  then exec "/usr/local/sbin/statuspage/[COMPONENT]-partial"
    ELSE IF recovered THEN EXEC "/usr/local/sbin/statuspage/[COMPONENT]-up"

Теперь у нас есть ситуация, когда мы хотим установить статус компонента на «Major Outage», если оба web-a-https и web-b-https не работают.

Я подумал, что это возможно с зависимостями, и попробовал следующее:

check program demo-group with path /bin/true
  depends on web-a-https, web-b-https
  if status == 0 then exec '/usr/local/sbin/statuspage/[COMPONENT]-up'
  if status == 1 then exec '/usr/local/sbin/statuspage/[COMPONENT]-down'

Я полагал, что служба будет отслеживаться только в том случае, если обе зависимости активны и тест (что всегда верно) проходит. Это вообще не работает, потому что события отключения web-a-https, web-b-https, похоже, не распространяются на «верхний уровень».

Я попытался установить команду запуска / остановки для групповой службы, но это тоже не сработало.

Есть ли способ сделать это в monit, или мне нужно создать клей для сценариев оболочки, чтобы это произошло?