JMX y monitorización de JBoss

0
39184

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:

  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

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!

Dejar respuesta

Please enter your comment!
Please enter your name here