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!