A receita abaixo é uma receita à moda Linux para fazer um watchdog para o ScadaBR no Linux.
O Watchdog para quem não sabe, é uma ferramenta que verifica se o ScadaBR esta rodando a tempos regulares, caso o tomcat trave ou caia por algum motivo, este por sua vez vai reiniciar o tomcat.
Ao contrário de usar o Java fazer o watchdog, vamos usar um script linux para tal tarefa, pois são coisas comuns para administradores Linux, são versáteis, úteis e nunca falham. Pois bem, a receita!
vá na pasta onde o tomcat esta instalado e procure a pasta webapps/ROOT.
Nesta crie um arquivo tavivo.html e dentro dele coloque a palavra SIM
Nosso script vai rodar e baixar do tomcat o arquivo tavivo.html e ler seu conteúdo, caso não seja a palavra sim, significa que o tomcat não esta ativo, ai ele reinicia o tomcat.
antes do script é necessário ter o programa wget. o wget costuma vir em diversas distribuições, ele serve para baixar coisas da internet. Caso não tenha o wget, é simples de instalar:
no debian/ubuntu e derivados (Raspbian tb) use o comando apt para instalar.
$ sudo apt-get install wget
vamos ao script:
O script pode ser criado na pasta /root, pois é necessário poderes do root para caso precise reiniciar o tomcat.
#!/bin/sh
HOST=127.0.0.1
PORT=8080
#infinite loop
while [ 1 ]
do
#tentando acessar a página do tomcat
RES=`wget -O - -o /dev/null --proxy=off http://${HOST}:${PORT}/tavivo.html | awk '{ print $1 }'`
echo got ${RES}
#decide na resposta colocada na variável RES
if [ "$RES" = "SIM" ]
then
echo tomcat esta respondendo em: $HOST:$PORT
echo "INFO:" `date +"%Y-%m-%d %H:%M:%S"`"(watchdog) - Tomcat ta ativo!" >>/var/lib/tomcat8/logs/mango.log
# envia "O servidor Tomcat esta ativo"
else
echo "ALERTA: O servidor tomcat não esta ativo:"
echo "ERRO:" `date +"%Y-%m-%d %H:%M:%S"`"(watchdog) - Tomcat NAO ESTA RODANDO! Reiniciando!" >>/var/lib/tomcat8/logs/mango.log
echo Finalizando processo tomcat ...
for thepin in `ps -Af | grep -v grep | grep tomcat | grep catalina | awk '{ print $2 }'`
do
kill -9 ${thepin}
done
echo Iniciando ...
service tomcat8 restart
echo " INFO: Tomcat8 reiniciando"
echo "WARN" `date +"%Y-%m-%d %H:%M:%S"`"(watchdog) - Tomcat8 Reiniciado" >>/var/lib/tomcat8/logs/mango.log
fi
echo aguardando 10 min para verificar novamente se o tomcat ainda esta de pé
sleep 600
done
agora é só colocar o script para rodar com
./watchdog.sh&
Para admins linux: Você pode usar o cron para agendar o watchdog, não esqueça de mudar o script para não ficar num loop infinito.
o Script basicamente usa o wget para baixar a página tavivo.html que colocamos no tomcat, o conteúdo baixado fica na variável RES. Esta variável é comparada com o conteúdo SIM que esta no arquivo. Se a resposta for diferente de SIM, se o arquivo não for encontrado ele vai saber que o tomcat não responde, então reinicia o tomcat.
Depois disso, aguarda 10 minutos e o processo se repete até o script ser encerrado.