Consultor tecnológico de desarrollo de proyectos informáticos.
Puedes encontrarme en Autentia
Somos expertos en Java/JEE
Regístrate para votar
La API JMX y Monitorización de JBoss
En este tutorial vamos a hacer una breve introducción a JMX y de cómo podemos acceder a las características de JBoss gracias a los MBeans que implementan esta API. Asimismo presentamos tres herramientas de monitorización del servidor.
Si estás interesado en monitorizar sólo Tomcat, visita este tutorial de nuestro compañero Javier Antoniucci: Monitorización de Tomcat con JMX
Para conocer JMX a fondo y aprender a programar MBeans, te recomiendo este estupendo tutorial de Paco: MBeans y JBoss
Contenidos:
Introducción a JMX
La Java Management eXtensions (JMX)
API 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
que 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...
JMX se integró pronto en la J2EE y más tarde en la JSE, concretamente desde la JDK 5. Su jerarquía de subpaquetes se encuentran bajo javax.management, y esta es su API pública. Asimismo existe una API privada bajo com.sun.jmx, a la que sólo debería tener acceso las propias librerías de la JDK, puesto que esta implementación puede evolucionar y ser cambiada en futuras versiones.
A partir de la JDK 5.0 se incluye Jconsole para monitorizar la JVM y aplicaciones que implementen JMX. Es un ejecutable con interfaz gráfica que se encuentra en la carpeta bin de la instalación de la distribucion de Sun JDK.
Arquitectura de JMX
Arquitectura basada en 3 capas:
- Capa de aplicación (o nivel de instrumentación), la capa de más bajo nivelenes donde residen los componentes (MBean) que facilitan la información necesaria para la gestión de una aplicación. Estos componentes son desarrollados según las necesidades de gestión específicas de cada parte de una aplicación.
- Nivel de agente: facilita una interfaz para el manejo de los MBean del nivel de instrumentación.
- Nivel de Adaptadores: uno o más conectores (o adaptadores de protocolo) que proporcionan acceso desde los sistemas de monitorización remotos.

(fuente: tutorial JMX, de Santiago Pereira)
Monitorización de JBoss
JBoss implementa JMX en su microkernel. El propio servidor dispone de un una consola JMX accesible por la URL http://localhost:8080/jmx-console que muestra los MBeans públicos accesibles por ella o programáticamente por código Java.:

Algunas
acciones útiles:
- Mostrar el árbol JNDI
- Forzar un volcado de memoria
- Mostrar el uso del pool de memoria
- Gestionar el escáner de despliegues
- Redesplegar una aplicación
- Acceder a la base de datos Hypersonic
- Detener JBoss
- Conocer estado de los EJB desplegados e instanciados
- ... y mucho más
El Jboss Web Console (http://localhost:8080/web-console/) muestra también la consola JMX en jerarquía de árbol:

Monitorización con JConsole
Jconsole (www.servletsuite.com) usa el JMX de JBoss para monitorizar el servidor: estado, logs, despliegues, uploads y visor de los MBeans:

Para poder trabajar con JConsole debemos seguir los siguientes pasos:
- Descargar jconsole.war desde http://www.servletsuite.com/jmx/jconsole.htm
- Copiar jconsole.war en la carpeta deploy del servidor utilizado, para su despliegue (habitualmente en /jboss-4.2.2.GA/server/default/deploy/)
- Con JBoss en ejecución, acceder a http://localhost:8080/jconsole
Cuando accedamos a la pestaña 'JMX' se nos presentará una casilla para introducir un patrón que determinará los MBeans que visualizaremos en la lista inferior. Los patrones son los habituales:
- Nombre totalmente cualificado e.g: boss.j2ee:service=EARDeployer
- Wildcard: *, ? e.g.: jboss.jm?:*, jboss:*, jboss.*:*, *:*

Simplemente hay que hacer click sobre un MBean obtenido en la lista para acceder a sus detalles:

Monitorización con MC4j Management Console for Java
El MC4j Management Console for Java (open source) es una aplicación standalone basada en java diseñada para monitorizar múltiples servidores y visualizar sus los MBeans, en su caso.

Para instalar la última versión (en el momento de escribir este tutorial, 2.0 alpha 1) sobre JBoss 4.2, tenemos que hacer un cambio en la librería log4j debido a una incompatibilidad de versiones.
- Descargar la versión apropiada a nuestro sistema operativo desde http://www.mc4j.org/confluence/display/MC4J/Download y descomprimir
- Descargar la librería log4j de http://logging.apache.org/log4j/1.2/, descomprimir y localizar el log4j-1.2.*.jar
- Renombrar a log4j-1.2.8.jar
- Sustituir el existente en mc4j/mc4j/modules/ext por el renombrado anterior
Finalmente cargamos la aplicación con el ejecutable situado en mc4j/bin
como hemos dicho antes MC4J soporta varios servidores, y tenemos que configurar una conexión de monitorización a cada uno de ellos que nos interese. En este caso para nuestro JBoss (en ejecución), pulsamos primero sobre el botón de añadir conexión al servidor:

En ela siguiente pantalla del asistente seleccionamos el tipo de servidor y damos un nombre a la nueva configuración que estamos creando. Con una instalación estándar de JBoss no es necesario cambiar ninguno de los demás parámetros aparecen en las siguientes casillas de JNDI, contexto, etc.:

En el paso 2 del asistente seleccionamos la carpeta raiz del JBoss que queramos monitorizar:
El último paso sirve para crear el listado de dependencias de Servidor. Si hemos seleccionado correctamente la instalación del servidor en el paso 2, MC4J las encontrará por nosotros y no tendremos que hacer nada:

Hemos llegado al final. La configuración aparecerá en el árbol izquierdo de la interfaz, y si le damos al botón verde estableceremos la conexión, como se aprecia en la imagen siguiente:

Monitorización con ManageEngine Applications Manager 8
ManageEngine Applications Manager es un potente monitor comercial con una versión libre (limitación: máximo 5 monitores) aplicable a servidores, BBDD, aplicaciones, websites, ERP, transacciones y mucho más. Ha sido diseñada con una interfaz muy completa y ofrece múltiples estadísticas, que pueden asociarse acciones al seguimiento de recursos, como alarmas y notificaciones por correo electrónico. Permite la monitorización de recursos remotos (los anteriores monitores se limitaban al servidor local) y la monitorización de MBeans de JMX, por supuesto :-)
¡Comencemos con esta interesante herramienta!
- Descarga: http://manageengine.adventnet.com/products/applications_manager/download.html y ejecutar instalable
- Instalación (para ManageEngine AM 8 y Jboss 4.2, puertos estándar):
- Descargar log4j de http://logging.apache.org/log4j/1.2/, descomprimir y localizar el log4j-1.2.*.jar
- Renombrar a log4j.jar
- Sustituir el existente en AdventNet/ME/AppManager8/working/classes/ por el renombrado anterior
- Ejecución: startApplicationsManager en AdventNet/ME/AppManager8
- Jboss ha de poder aceptar conexiones remotas (e.g. iniciar el servidor con run -b 0.0.0.0 o la IP que deseemos que tenga acceso)
ManageEngine se habrá levantado en nuestro sistema como un servidor de monitorización, por lo tanto su consola de configuración será accesible vía web. Por eso navegamos a la URL http://localhost:9090/ y en la pantalla de navegación nos autenticamos con login admin y password admin.
Vamos a configurar ahora un monitor para nuestro JBoss. Primero pulsamos en la pestaña Monitors | New Monitor y en la columna Application Servers pulsamos sobre JBoss:

Seleccionamos como tipo de monitor JBoss Server e introducimos los datos como se observa en la imagen. (NOTA: escogiendo la versión 4.X la aplicación nos obliga a copiar Jboss-4.2.2.GA/client/jbossall-client.jar en AdventNet/ME/AppManager8/working/classes/jboss/40/, si este directorio no existe hay que crearlo):

Una vez conectado en nuevo monitor a JBoss, se muestra un resumen de monitores (pulsa sobre la imagen para verla en su tamaño original):
Si pulsamos sobre el monitor de JBoss veremos el siguiente panel de resumen. En él pueden asociarse alarmas a los recursos mostrados, añadir atributos y MBeans a mostrar... se trata de un panel muy configurable.
Conclusiones
Como cierre a este tutorial podemos quedarnos con estos puntos fundamentales:
- La API JMX permite acceder a información publicada por una aplicación
- Las unidades que publican esa información son los Mbeans
- JBoss implementa multitud de MBeans
- Existen herramientas para usar la JMX de JBoss y monitorizar su estado
En Autentia ofrecemos permanentemente formación de las últimas tecnologías del sector informático. Si guieres formación adaptada a tus necesidades y desarrollos, no dudes en visitar nuestros cursos y contactar con nosotros; ¡trabajamos con estas tecnologías en nuestro día a día!
Puedes opinar o comentar cualquier sugerencia que quieras comunicarnos sobre este tutorial; con tu ayuda, podemos ofrecerte un mejor servicio.












