La Java Management eXtensions (JMX) es un estándar de Sun para la gestión y monitorización remota de recursos java como:

  • Aplicaciones y dispositivos
  • Servidores y servicios
  • JVM


Nos permite entre otras cosas consultar o cambiar una determinada configuración, conocer estadísticas y comportamiento de una aplicación, conocer cambios de estado (y notificarlo, iniciar acciones, etc), crear nuestros manejadores de recursos y publicarlos en una API, interoperar con otras tecnologías...

A continuación veremos cómo podemos configurar nuestra aplicación Java para poder monitorizarla mediante JConsole.

Monitorización con JConsole

JConsole es un entorno gráfico que nos permite monitorizar una aplicación Java por JMX.

Si queremos abrir JConsole simplemente ejecutamos:

jconsole

Si queremos especificar un proceso le pasamos el PID:

jconsole 2956


Monitorización remota con JConsole

También podemos arrancar JConsole y conectarnos a un proceso Java que está en otra máquina. Para poder realizar esto tenemos que modificar los parámetros de la variable "JAVA_OPTS" de nuestra aplicación para que levante un puerto y acepte peticiones JMX.

En el caso de Tomcat editamos el fichero "catalina.sh" y añadimos los siguientes parámetros a la variable JAVA_OPTS:

-Dcom.sun.management.jmxremote.port=9004
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false


Ahora ya podemos conectarnos mediante JConsole ejecutando:

jconsole service:jmx:rmi:///jndi/rmi://SERVIDOR:9004/jmxrmi