Monitorar um servidor Java HTTP customizado a partir de um shell bash?

2

Como eu poderia monitorar uma porta de serviço de um shell bash?

Eu quero monitorar um serviço Java (uma vez por minuto na porta 9090) e, em seguida, chamar "/etc/init.d/myservice -restart" se o serviço não estiver respondendo com uma mensagem HTML simples.

Como você faria algo assim?

Minha ideia era usar algo semelhante a isso:

wget -O - --no-check-certificate --progress=dot https://localhost:9090

Ou

curl --insecure https://localhost:9090
    
por djangofan 04.04.2011 / 03:28

2 respostas

0

Obrigado "coredump". Você me deu a dica que eu precisava para resolver o problema. Vou usar uma combinação de CURL e também a resposta em página .

Aqui está o que eu criei, o que parece funcionar para mim. Se você puder melhorar essa resposta, eu posso conceder os pontos para você.

#!/bin/bash
rm -f listening.htm
curl -s --connect-timeout 10 --insecure $1 > listening.htm
RETVAL=$?
echo "Curl return value : $RETVAL"
if [ $RETVAL -eq 2 ]; then
  echo "Missing URL parameter. Add URL and try again."
fi
if [ $RETVAL -eq 6 ]; then
  echo "Unable to resolve host. Check URL and try again."
fi
if [ $RETVAL -eq 0 ]; then
  echo "Is the site listening...?"
elif [ $RETVAL -eq 7 ]; then
  echo "Server timeout."
elif [ $RETVAL -eq 22 ];then
  echo "HTTP error above 400"
else
  rm listening.htm
  exit 1
fi

if grep -Fq "The site is listening..." listening.htm
then
  echo "Health is ok."
else
  echo "Service didn't respond.  Stopping."
  /home/ec2-user/SITE/stopService.sh
  sleep 6 
  echo "Starting service."
  /home/ec2-user/SITE/startService.sh
  sleep 10
  echo "Restarted at 'date'" >> monitor.log
  rm listening.htm
fi
exit 1
    
por 04.04.2011 / 19:30
6

Use monit , é mais seguro do que escrever um script de shell para isso.

Se você realmente quiser escrever um script, use enrole para obter o conteúdo, atualize-o e reinicie o serviço em caso de falhar.

    
por 04.04.2011 / 03:32

Tags