tutorial - ¿Tomcat está corriendo?
spring mvc 4 tutorial español (16)
Interesado en saber cómo la gente suele verificar si Tomcat se está ejecutando en un entorno Unix.
Yo compruebo que el proceso se está ejecutando usando
ps -ef | grep java
ps -ef | grep logging
o compruebo que el número de puerto esté activo
netstat -a | grep 8080
¿Hay alguna forma mejor de verificar que Tomcat se esté ejecutando? Lo anterior parece ser una manera "hacky" de comprobar que Tomcat se está ejecutando.
¿Estás tratando de configurar un sistema de alerta? Para un simple "latido", haga una solicitud HTTP al puerto Tomcat.
Para una supervisión más elaborada, puede configurar JMX y / o SNMP para ver las estadísticas de JVM. Ejecutamos Nagios con el complemento SNMP (puentes a JMX) para verificar el uso de la memoria Tomcat y solicitar el tamaño del grupo de subprocesos cada 10-15 minutos.
http://tomcat.apache.org/tomcat-6.0-doc/monitoring.html
Actualización (2012):
Hemos actualizado nuestros sistemas para usar "monit" para verificar el proceso de tomcat. Me gusta mucho. Con muy poca configuración, verifica automáticamente si el servicio se está ejecutando y se reinicia automáticamente si no es así. (enviando una alerta por correo electrónico). Se puede integrar con las secuencias de comandos /etc/init.d o verificar por nombre de proceso.
¿Por qué grep ps
, cuando el pid ha sido escrito en el archivo $CATALINA_PID
?
Tengo una secuencia de comandos cron
checker que envía un correo electrónico cuando tomcat está inactivo:
kill -0 `cat $CATALINA_PID` > /dev/null 2>&1
if [ $? -gt 0 ]
then
echo "Check tomcat" | mailx -s "Tomcat not running" [email protected]
fi
Supongo que también podrías usar wget
para verificar el estado de tu tomcat. Si tiene una página de diagnóstico con la carga del usuario, etc., podría buscarla periódicamente y analizarla para determinar si algo anda mal.
Aquí están mis dos centavos.
Tengo varias instancias de tomcat ejecutándose en diferentes puertos para la configuración de mi clúster. Uso el siguiente comando para verificar cada proceso que se ejecuta en diferentes puertos.
/sbin/fuser 8080/tcp
Reemplace el número de puerto según su necesidad.
Y para matar el proceso use -k
en el comando anterior.
- Esto es mucho más rápido que el modo
ps -ef
o cualquier otro comando donde se llame a un comando y se llame a otrogrep
en la parte superior. - Funciona bien con múltiples instalaciones de tomcat, o cualquier otro servidor que utiliza un puerto corriendo en el mismo servidor.
El comando equivalente en los sistemas operativos BSD
es fstat
Básicamente quieres probar
- Conectividad a su instancia de tomcat
- Reúne algunas estadísticas básicas
- Si el proceso de Unix se está ejecutando
Evaluaré las 2 primeras opciones, ya que la tercera ya ha recibido suficiente respuesta.
Lo más fácil es simplemente desarrollar una página web en su WebApp que reúna algunas métricas básicas y tenga un cliente que pueda leer los resultados o detectar problemas de conectividad.
Para hacerlo, tienes varios problemas
Cree un script de Shell que compruebe si tomcat está activo o inactivo y configure un cron para sh para que lo compruebe cada pocos minutos, y arranque automáticamente tomcat si está inactivo. Fragmento de muestra de código a continuación
TOMCAT_PID=$(ps -ef | awk ''/[t]omcat/{print $2}'')
echo TOMCAT PROCESSID $TOMCAT_PID
if [ -z "$TOMCAT_PID" ]
then
echo "TOMCAT NOT RUNNING"
sudo /opt/tomcat/bin/startup.sh
else
echo "TOMCAT RUNNING"
fi
Dado que mis instancias de tomcat se nombran como tomcat_. Por ejemplo. tomcat_8086, yo uso
#
ps aux | grep tomcat
Otro método es usar la utilidad nc
nc -l 8086
(número de puerto)
O
ps aux | grep java
Descubrí que Tomcat es bastante quisquilloso, ya que un proceso en ejecución o un puerto abierto no necesariamente significa que realmente esté manejando solicitudes. Normalmente trato de tomar una página conocida y comparar su contenido con un valor precalculado esperado.
En mi sistema Linux, inicio Tomcat con el script startup.sh. Para saber si se está ejecutando o no, yo uso
ps -ef | grep tomcat
Si el resultado de salida contiene toda la ruta a mi carpeta tomcat, entonces se está ejecutando
Prueba este comando
ps -ef | awk ''/[t]omcat/{print $2}''
Devolverá el pid si tomcat se está ejecutando.
Puede verificar el estado de tomcat de las siguientes maneras:
ps -ef | grep tomcat
Esto devolverá la ruta de Tomcat si el tomcat se está ejecutando
netstat -a | grep 8080
donde 8080 es el puerto Tomcat
Si tomcat se instala localmente, escriba la siguiente url en una ventana del navegador: {localhost: 8080}
Esto mostrará la página de inicio de Tomcat con el siguiente mensaje.
Si está viendo esto, ha instalado con éxito Tomcat. ¡Felicitaciones!
Si tomcat está instalado en un servidor separado, puede escribir replace localhost por un nombre de host válido o Iess donde está instalado tomcat.
Lo anterior se aplica a una instalación estándar en la que tomcat usa el puerto predeterminado 8080
Siempre hago
tail -f logs/catalina.out
Cuando veo allí
INFO: Server startup in 77037 ms
entonces sé que el servidor está listo.
intente esto en su lugar y porque necesita privilegios de root use sudo
sudo service tomcat7 status
netstat -lnp | grep 8080
netstat -lnp | grep 8080
sería probablemente la mejor manera, si conoce el puerto de escucha de Tomcat. Si quiere estar seguro de que es funcional, deberá establecer una conexión y enviar una solicitud HTTP para obtener una respuesta. Puede hacerlo programáticamente o usando cualquier navegador web.
wget url
o curl url
donde url es una url del servidor tomcat que debería estar disponible, por ejemplo: wget http://localhost:8080
. Luego, compruebe el código de salida, si es 0 - Tomcat está activo.
$ sudo netstat -lpn |grep :8080
Para verificar el número de puerto
$ ps -aef|grep tomcat
Es cualquier tomcat se está ejecutando en el servidor.
tsssinfotech-K53U infotech # ps -aef|grep tomcat
raíz 9586 9567 0 11:35 pts / 6 00:00:00 grep --colour = auto tomcat