Мы используем 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, или мне нужно создать клей для сценариев оболочки, чтобы это произошло?