2012-01-15

Monitorizar tomcat con monit en linux Debian

Monit nos permite también monitorizar procesos o servicios específicos (anteriormente vimos como se puede monitorzar el espacio en disco ó la CPU del sistema).

Podemos comprobar si están siendo ejecutados, si consumen demasiada CPU ó memoria, si están escuchando en el puerto TCP/IP adecuado, etc.

Para hacer esto lo más simple es usar el PID del proceso.

Para tomcat podemos definir el fichero PID definiendo la variable de entorno CATALINA_PID al nombre de un fichero que contendrá el PID de tomcat.

El script de arranque de tomcat "/etc/init.d/tomcat" quedará entonces:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          tomcat
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Tomcat
# Description:       Tomcat
### END INIT INFO
# Author: Hipolito Jimenez <hipolito.jimenez@gmail.com>
#
# Please remove the "Author" lines above and replace them
# with your own name if you copy and modify this script.
# Do NOT "set -e"
do_start()
{
        su - tomcat -c "export CATALINA_PID=/opt/tomcat/logs/tomcat.pid; export JAVA_HOME=/opt/java; /opt/tomcat/bin/startup.sh"
        iptables -t nat --append PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
}
#
# Function that stops the daemon/service
#
do_stop()
{
        su - tomcat -c "export CATALINA_PID=/opt/tomcat/logs/tomcat.pid; export JAVA_HOME=/opt/java; /opt/tomcat/bin/shutdown.sh"
        iptables -t nat --flush
}
case "$1" in
  start)
        do_start
        ;;
  stop)
        do_stop
        ;;
  *)
        echo "Usage: tomcat {start|stop}" >&2
        exit 3
        ;;
esac




Para monitorizar tomcat desde monit ahora debemos añadir la siguiente regla al fichero de configuración "/etc/monit/monitrc":

check process tomcat with pidfile /opt/tomcat/logs/tomcat.pid
  if failed port 8080 then alert

Esta regla nos alertará por email si tomcat no está corriendo (si el PID del fichero no está en memoria) y si ese proceso no tiene abierto el puerto 8080.

No hay comentarios:

Publicar un comentario