Estamos usando o Monit para verificar nossos servidores da web. Quando a verificação falha (ou obtém êxito), o conteúdo correspondente em uma página de status é atualizado por meio de um script de shell como este:
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"
Agora, temos uma situação em que queremos definir o status de conteúdo como "Interrupção principal" se web-a-https e web-b-https BOTH estiverem inativos.
Eu imaginei que isso seria possível com dependências e tentei isso:
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'
Eu percebi que o serviço só seria monitorado se as duas dependências estivessem ativas e o teste (o que é sempre verdadeiro) fosse aprovado. Isso não funciona de forma alguma porque os eventos inativos da web-a-https, web-b-https não parecem ser propagados para o "nível superior".
Eu tentei configurar um comando start / stop para o serviço de grupo, mas isso também não funciona.
Existe uma maneira de fazer isso em monit, ou eu tenho que construir alguma cola de shell script para fazer isso acontecer?
Tags monitoring monit