Inicio Programacion Java La API JMX y Monitorización de JBoss

La API JMX y Monitorización de JBoss

Viernes, 06 de Febrero de 2009 01:46 Adrián Toledo Programación - Java
Usar puntuación: / 0
MaloBueno 
Tweeteame!

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.

Para conocer JMX a fondo y aprender a programar MBeans, te recomiendo este estupendo tutorial de Paco: MBeans y JBoss

Contenidos:

  1. La API JMX y Monitorización de JBoss
    1. Contenidos:
    2. Introducción a JMX
      1. Arquitectura de JMX 
    3. Monitorización de JBoss
      1. Monitorización con JConsole
      2. Monitorización con MC4j Management Console for Java
      3. Monitorización con ManageEngine Applications Manager 8
    4. Conclusiones

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:

  1. 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.
  2. Nivel de agente: facilita una interfaz para el manejo de los MBean del nivel de instrumentación.
  3. Nivel de Adaptadores: uno o más conectores (o adaptadores de protocolo) que proporcionan acceso desde los sistemas de monitorización remotos.

Diagrama de la arquitectura JMX de JBoss
(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.:

Monitorizar el servidor con JBoss JMX Console, JMX Agent View

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:

Monitorizar el servidor con JBoss Web Console, JBoss Management Console

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:

Monitorizar el servidor JBoss con JConsole, de servletsuite.com

Para poder trabajar con JConsole debemos seguir los siguientes pasos:

  1. Descargar jconsole.war desde http://www.servletsuite.com/jmx/jconsole.htm
  2. Copiar jconsole.war en la carpeta deploy del servidor utilizado, para su despliegue (habitualmente en /jboss-4.2.2.GA/server/default/deploy/)
  3. 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.*:*, *:*

Monitorizar los MBeans del servidor JBoss con JConsole, de servletsuite.com

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

Ver los detalles de un MBean de JBoss con JConsole

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.

Monitorizar JBoss Server con MC4j Management Console for Java

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.

  1. Descargar la versión apropiada a nuestro sistema operativo desde http://www.mc4j.org/confluence/display/MC4J/Download y descomprimir
  2. Descargar la librería log4j de http://logging.apache.org/log4j/1.2/, descomprimir y localizar el log4j-1.2.*.jar
  3. Renombrar a log4j-1.2.8.jar
  4. 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:

Nueva conexion de un servidor a MC4j

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.:

Asistente de conexion de un servidor JBoss al monitor MC4j

En el paso 2 del asistente seleccionamos la carpeta raiz del JBoss que queramos monitorizar:

Seleccionar la carpeta raiz de la instalacion de JBoss 

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:

Seleccionar las dependencias de JBoss en el asistente de MC4J

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:

Explorador de JBoss desde la MC4J Management Console

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):
    • 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:

Configurar un monitor de JBoss Server con ManageEngine Applications Manager 8

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):

Seleccionamos la version 4.X de JBoss y copiamos jbossall-client.jar

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):

Resumen de los monitores dados de alta en el ManageEngine Applications Manager

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.

Panel de resumen de los recursos del servidor JBoss monitorizado

Panel con las aplicaciones desplegadas en el servidor JBoss

Panel que muestra los atributos, acciones y recursos utilizados por JBoss

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
Fuente Adictosaltrabajo.com
rssfeed Siguenos con tu lector de noticias preferido.
Si te ha gustado este artículo y si crees que lo que está escrito vale la pena compartirlo, entonces compártelo con la comunidad que prefieras mediante los links que están debajo. Gracias por visitarnos.
Email Drucken Favoriten Twitter Facebook Myspace Stumbleupon Digg MR. Wong Technorati aol blogger google reddit YahooWebSzenario

Escribir un comentario


Código de seguridad
Refescar

follow me twitter

Anuncios

Enlaces

Hosting Positivo Networks


Hosting y Diseño Web Profesional

Quizás también te pueda interesar: