Teste para verificar se a aplicação esteve fora do ar
12 respostas
kornkorn
Seguinte,
Alguém conhece ou já implementou algum algoritmo que verifica se uma aplicação j2ee usando Tomcat esteve fora do ar, caso estiver registra no banco de dados a hora e aplicação? eu sei que existe o http://www.lambdaprobe.org/ , e eu uso ele, porem a utilidade dele é para outra necessidade de monitoramento.
Se eu entendi bem, uma implementação da interface ServletContextListener resolve…
publicclassListenerTestimplementsServletContextListener{publicvoidcontextDestroyed(ServletContextEventevent){//faz algo pq a aplicação vai, ou saiu do ar...}publicvoidcontextInitialized(ServletContextEventevent){}}
Entendi… porem so ficou uma dúvida, quando essa servleta será acionada? pois eu preciso de controlar isso automaticamente.
Grato
albama
Seguindo este exemplo você terá que perguntar para aplicação se ela está ativa de tempos em tempos.
Nesse caso , você pode armazenar em log.
Mas e se o computador que estiver perguntado estiver sem energia eletrica ?
Tudo isso vai por agua abaixo.
g4j
kornkorn:
Entendi… porem so ficou uma dúvida, quando essa servleta será acionada? pois eu preciso de controlar isso automaticamente.
Grato
Não é uma classe servlet cara. É um listener! E vai se acionada automaticamente pelo container quando a aplicação iniciar ( executa método contextInitialized) ou cair (executa método contextDestroyed).
Agora, se o container cair, não sei qual seria o comportamento, só testando pra ter certeza…
albama
Correto é uma listener , mas na queda de energia cairá tudo.
O que o pessoal tem feito, não sei se estamos respondendo o foco da pergunta deste tópico mas é assim:
1.Colocar o servidor que não pode cair em um nobreak ligado a rede com o sistema em funcionamento
Coloca-se um computador ( 486, pentium 100) mais fraco , fora do nobreak e ligado na rede
O servidor que está no nobreak fica perguntado se o computador que nao está no nobreak está no ar.
caso não esteja , enviar um email para os administradores, grava log , e etc…
caso durante um periodo de perguntas de 5 minutos ao servidor que nao está nao está no nobreak
nao respondeu desliga stop nos sistemas , stop do servidor.
Eu implementei essa solução, e deu certo, eu tinha problema de queda de energia de madrugada e nao tinha ninguem para verificar o problema , fora o risco de danificar o servidor numa queda brusca , ou volta de energia com muita carga.
Bom no meu caso resolveu, nao sei se é o foco da pergunta, mas deixo um solução que funciona.
Marco Aurélio
kornkorn
Bacana a solução dos pc´s escutando um ao outro, eu gostaria de ver em código como ficou essa implementação, poderia me ajudar albama?
albama
Eu não estou na empresa neste momento , mas basicamente o que vc precisa é ler o ip do computador que está fora do nobreak
Na web tem bastante rotina para ler ip, isso é 90% da solução.
Posteriormente vc pode implemtar qualquer coisa : Wireless por exemplo
kornkorn
Você fica pingando o outro servidor sem parar? caso de timeout a aplicação estará fora do ar?
albama
Dentro do java de tempos em tempos vc pega o ip
caso o ip nao responda ( isso é uma exceçao ), aí vc coloca as regras
kornkorn
Olha só como estou pensando em montar a arquitetura de comunicação.
Contéudo do algoritmo:
| pinga o servidor se for ok, então sai fora.
| senão, salva no banco de dados a data_hora, host.
| será gerado um TesteAplicacao.jar
Usando o TesteAplicacao.jar
Servidor Linux no crontab um script shell executando o TesteAplicacao.jar de 1 em 1 min.
Acho que assim ficaria bom.
albama
Também funciona com shellScript , na verdade foi implementado assim no inicio, posteriormente para java.
kornkorn
blz. agradeço pela atenção vou implementar e depois posto no grupo o funcionamento