Em vez de criar scripts do zero, recomendo usar Monit . Eu encontrei esta página que lhe dá algumas noções básicas, mas eu acho a implementação aqui é um pouco desleixada. Então deixe-me resolver isso. Isso explicará como definir monit
no Ubuntu 12.04. Primeiro, instale monit
do repositório da seguinte forma:
sudo aptitude install monit
Em seguida, você deseja ajustar as configurações do servidor de e-mail para receber alertas por e-mail. Basta abrir o monit
config assim:
sudo nano /etc/monit/monitrc
Agora, procure a área com as configurações do servidor de e-mail e insira esta linha:
set mailserver localhost
Este é o conjunto de regras que eu uso para o Apache. Primeiro, crie o arquivo de configuração:
sudo nano /etc/monit/conf.d/apache2.conf
check process apache with pidfile /var/run/apache2.pid
start "/etc/init.d/apache2 start"
stop "/etc/init.d/apache2 stop"
if failed host 127.0.0.1 port 80
with timeout 15 seconds
then restart
if loadavg (1min) greater than 7
for 5 cycles
then restart
alert [email protected] only on { timeout, nonexist, resource }
Em seguida, reinicie monit
da seguinte forma:
sudo service monit restart
Esse conjunto de regras verifica a porta 80
no endereço do host local de 127.0.0.1
e, se houver um tempo limite de 15 segundos, o serviço Apache é reiniciado. Eu também tenho uma regra de média de carga conectada a ele que verificará a carga a cada minuto e se estiver acima de 7 por 5 ciclos consecutivos, ela reiniciará o serviço apache
.
Para o Tomcat, adaptar a regra nesta página - como mencionado acima, ficaria assim. Primeiro abra um arquivo para edição no diretório monit
config assim:
/etc/monit.d/tomcat
E coloque este conjunto de regras nele:
check host tomcat with address localhost
stop program = "/etc/init.d/tomcat stop"
start program = "/etc/init.d/tomcat restart"
if failed port 8080 and protocol http
then start
alert [email protected] only on { start, nonexist }
Em seguida, reinicie monit
, assim, para essas novas regras:
sudo service monit restart
Eu verificaria novamente o { start, nonexist }
, como estou supondo agora, pois não tenho uma configuração do Tomcat para testar. Mas isso deve ser bom.
Você pode seguir o monit
log aqui:
sudo tail -f -n 200 /var/log/monit.log