Problemas al monitorear el servidor Apache Tomcat usando Monit

Problemas al monitorear el servidor Apache Tomcat usando Monit

He instalado Monit usando el siguiente comando en el servidor Ubuntu Linux 12.04.1

sudo apt-get install monit

Mi objetivo principal al usar Monit es reiniciar mis servicios MySQL y Apache Tomcat automáticamente cuando se cierran/detienen.

#Check and restart mysql service
check process mysqld with pidfile "/run/mysqld/mysqld.pid"
group database
start program = "/etc/init.d/mysql start"
stop program = "/etc/init.d/mysql stop"
if failed host 127.0.0.1 port 3306 protocol mysql then restart
if 5 restarts within 5 cycles then timeout

El código anterior funciona perfectamente y Monit reinicia el servicio MySQL (cuando se cierra/detiene).

De hecho, configuré Tomcat de la siguiente manera: - Descargué el zip de Tomcat y lo extraje en una ubicación particular - Lo configuré como mi servicio demonio (y mi servidor Tomcat funciona correctamente).

Como no tengo el archivo pid para esta configuración de Tomcat, planeo verificar el estado de Tomcat e iniciarlo usando el siguiente código:

#Check and restart tomcat service
check host tomcat with address 127.0.0.1
stop program = "/etc/init.d/tomcat stop"
start program = "/etc/init.d/tomcat start"
if failed port 8080 and protocol http
then start

Sin embargo, no pude iniciar Tomcat con éxito (cuando se cerró). Al investigar los registros de Monit encontré el siguiente mensaje:

[UTC Dec 24 12:08:23] error    : 'tomcat' failed, cannot open a connection to INET[127.0.0.1:8080] via TCP
[UTC Dec 24 12:08:23] info     : 'tomcat' start: /etc/init.d/tomcat

A través de los registros anteriores, descubrí que Monit está intentando iniciar Tomcat automáticamente para cada momento en particular (cuando descubre que el servicio Tomcat fue eliminado). ¡Sin embargo, algunos conflictos internos lo impiden!

Otra información:

El servidor Tomcat se ejecuta correctamente utilizando el puerto 8080:

netstat -an | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN     
tcp6       0      0 127.0.0.1:8080          127.0.0.1:53582         TIME_WAIT  


ps -ef|grep tomcat
root     16237     1  9 12:10 ?        00:00:37 /usr/lib/jvm/java-6-oracle/bin/java -Djava.util.logging.config.file=/usr/share/apache-tomcat-7.0.40/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1530m -XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=512m -XX:MaxPermSize=1024m -Djava.endorsed.dirs=/usr/share/apache-tomcat-7.0.40/endorsed -classpath /usr/share/apache-tomcat-7.0.40/bin/bootstrap.jar:/usr/share/apache-tomcat-7.0.40/bin/tomcat-juli.jar -Dcatalina.base=/usr/share/apache-tomcat-7.0.40 -Dcatalina.home=/usr/share/apache-tomcat-7.0.40 -Djava.io.tmpdir=/usr/share/apache-tomcat-7.0.40/temp org.apache.catalina.startup.Bootstrap start
root     16851 16847  0 12:17 ?        00:00:00 sh -c su root -c ps\ \-ef\|grep\ tomcat 2>&1 2>/dev/null
root     16852 16851  0 12:17 ?        00:00:00 su root -c ps -ef|grep tomcat
root     16853 16852  0 12:17 ?        00:00:00 bash -c ps -ef|grep tomcat
root     16855 16853  0 12:17 ?        00:00:00 grep tomcat

Agregar preferIPv4Addresses y preferIPv4Stack en el archivo catalina.sh:

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1530m
-XX:NewSize=512m -XX:MaxNewSize=1024m -XX:PermSize=512m -XX:MaxPermSize=1024m -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true"

Registro de monitorización:

[UTC Dec 24 12:48:39] error    : 'tomcat' failed protocol test [HTTP] at INET[127.0.0.1:8080] via TCP -- HTTP: Error receiving data -- Resource temporarily unavailable

¿Alguien puede guiarme sobre esto?

Gracias.

Respuesta1

Parece que Tomcat se vincula a una dirección ipv6 para 127.0.0.1.

Puede intentar utilizar las directivas preferIPv4Stack=truey preferIPv4Addresses=trueen las opciones de Java para vincularse a una dirección IPv4.

Edite catalina.shel script de inicio de Tomcat y agregue lo siguiente:

JAVA_OPTS="$JAVA_OPTS -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true"

información relacionada