Posted on feb 1, 2010

Monitorización de Tomcat con JMX

JMX define toda una arquitectura para la monitorización y administración de aplicaciones basadas en Java.

Aplicado a los servidores de aplicaciones, y más concretamente a Apache Tomcat, JMX nos permite obtener métricas del estado del servidor, de la máquina virtual que ejecuta, valores de configuración, acceso a operaciones de administración, estadísticas, etc.

Para extraer todos estos valores, primero es necesario configurar nuestro servidor de aplicaciones con el fin de activar el soporte JMX. En el caso de Tomcat, la configuración es muy sencilla y sólo tenemos que editar el catalina.sh y añadir la siguiente línea al principio el fichero:

CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9696 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

Una vez configurado y arrancado, podemos utilizar la aplicación JConsole que incorpora el JDK6 por defecto. Esta consola permite conectar a servicios JMX e interatuar con los MBeans expuestos:

$ jconsole service:jmx:rmi://localhost/jndi/rmi://localhost:9696/jmxrmi

Si ya utilizamos un mecanismo de monitorización basado en SNMP, existe la posibilidad de utilizar un adaptador de JMX a SNMP con el fin de poder extraer y explotar los datos:

http://www.webnms.com/snmpadaptor/index.html

Si utilizamos JBoss, este adaptador está disponible directamente en la consola. En el siguiente artículo se explica como configurarlo para exportar los valores a Cactis:

http://ivanator.wordpress.com/2010/01/30/monitorizar-jboss-con-cacti-de-jmx-a-snmp/

Por último, si nuestra plataforma es Nagios, también existen algunos plugins disponibles:

http://sourceforge.net/projects/nagioscheckjmx/ y http://sourceforge.net/projects/jboss2nagios/