Monitorización JBoss: revisión de la base teórica de su implementación
JBoss, el servidor de aplicaciones desarrollado en Java EE, se ha convertido en una de las alternativas de software libre más recurridas para herramientas como IBM Websphere y Oracle WebLogic. De aquí, el creciente interés entre administradores y desarrolladores por establecer un esquema de monitorización de JBoss.
Para la monitorización de JBoss se aplican los mismos objetivos que motivan la monitorización de cualquier servidor de aplicaciones, donde destaca:
- Asegurar que el rendimiento de las aplicaciones no se vea afectado por el comportamiento de los servidores.
- Anteponerse a los problemas en los servidores que puedan poner en riesgo las aplicaciones
- Contribuir a minimizar el tiempo de inactividad de las aplicaciones.
Para lograr estos objetivos, las herramientas de monitorización desarrollan piezas de software que nos permiten tener una visualización integral de los servidores.
Entender cómo se desarrollan estas piezas de monitorización para el caso de JBoss, y cuál es la base teórica que las sustenta, le otorgará al lector las herramientas para evaluar las capacidades y limitaciones que ofrecen diferentes plataformas de monitorización.
Así, con la monitorizacion JBoss debemos comenzar por plantearnos la siguiente pregunta:
¿Cómo comunicamos la herramienta de monitorización en cuestión con el servidor JBoss, de manera que se puedan extraer de forma eficiente los valores de los parámetros que deseamos medir?
La respuesta se centra en la comprensión y en el uso de dos elementos clave:
- La implementación en JBoss de JMX (Java Management eXtensions) que es, en sí, un esquema de gestión y monitorización propio de Java.
- La utilización de la herramienta JConsole, que permite la interacción con los elementos definidos por la arquitectura JMX.
En este artículo revisaremos estos elementos y luego plantearemos las posibles estrategias de desarrollo para la monitorización JBoss.
Arquitectura JMX
JMX se implementa a través de un modelo de tres capas que podemos revisar de la siguiente forma:
1. Capa de instrumentación
Partamos de un recurso en el servidor JBoss del cual se necesita obtener información para su gestión y/o monitorización. A estos recursos, en el ámbito JMX, se les llama “recursos gestionables”.
En esta capa, JMX implementa un objeto Java conocido como MBean (Managed Bean) que es el encargado de instrumentar la gestión y monitorización que se hará sobre el recurso gestionable.
Para simplificar podemos ver a los MBeans como programas encargados de suministrarnos un grupo de acciones sobre el recurso, registrar datos asociados al mismo y establecer los mecanismos para comunicar dichos datos.
Las capacidades de los MBean se adecuan a la naturaleza del recurso gestionable; por lo tanto un MBean puede diferir mucho de otro. Sin embargo, la arquitectura JMX propone establecer un esquema estándar de implementación de los MBeans, de manera que facilite el trabajo de los niveles superiores.
2. Capa de Agente
Para organizar la interacción de los sistemas externos con los MBeans y en un esfuerzo por desacoplar los MBeans de las herramientas que los utilizaran, JMX implementa un Servidor MBean.
El servidor MBean entonces será el encargado de suministrar los métodos para realizar las siguientes acciones sobre los MBeans:
- Búsqueda
- Creación
- Registro
- Eliminación
Otra responsabilidad del Servidor MBean es definir los métodos de acceso a los MBeans. Cada MBean que es integrado al servidor MBean comienza a ser administrable, es decir, comienza a ser accesible de forma remota a través de los conectores y adaptadores asociados al servidor MBean.
Entenderemos mejor la utilidad de estos conectores y adaptadores en la siguiente capa.
3. Capa de Servicios Distribuidos
En esta capa se definen los esquemas de interacción con los MBeans, procurando que esta interacción sea flexible, segura y que genere una comunicación lo más ligera posible.
Esto se logra con la implementación de diferentes adaptadores que ofrecen una gama variada de conexión. La siguiente es una clasificación en función de los protocolos utilizados:
- Adaptador RMI (Remote Method Invocation).
- Adaptador HTTP
- Adaptador SNMP
JConsole
JConsole es una herramienta gráfica de monitorización de Java que cumple con las especificaciones de la arquitectura JMX y que es parte del JDK (Java Development Kit), siendo por lo tanto una herramienta gratuita.
JConsole nos permite el acceso al Servidor MBean de la capa de agente y ha resultado ser muy utilizado tanto por los administradores de los servidores JBoss como por los desarrolladores de herramientas de monitorización.
Teniendo entonces claros los fundamentos de la arquitectura JMX e introducidos a la herramienta JConsole, pensemos ahora en un software de monitorización que desea instrumentar un esquema de monitorización JBoss.
Herramientas de monitorización
Las herramientas de monitorización que requieren acceder a información sobre el comportamiento del servidor JBoss deben interactuar con la arquitectura JMX que estos implementan.
Considerando los tipos de adaptadores de la capa de servicios distribuidos podemos mencionar al menos tres tipos de estrategias:
1. Creación de uno o varios Complementos
Esta opción parte de la interacción con el Adaptador RMI y se desarrolla instalando la JConsole, regularmente en un servidor diferente al cual se quiere monitorear. Con JConsole se pueden identificar los MBeans que interesan, a partir de lo cual se crea un programa un recoja la información del MBean y luego la pase a un formato que pueda ser interpretado por el sistema de monitorización.
2. Interpretar la información del MBean a través de SNMP traps
En esta estrategia se interactúa con el adaptador SNMP y el reto principal es traducir los datos aportados por el MBean a SNMP traps, que el sistema pueda reconocer y manipular.
3. Desarrollar un solución WEB para extraer la información de los MBeans
Aquí la idea es utilizar el adaptador HTTP para establecer la comunicación entre la arquitectura JMX con una aplicación WEB, que luego de obtener los datos haga su adecuación para que sea reconocida y manipulada por el sistema de monitorización.
Tal como el lector podrá intuir, dada la flexibilidad que otorga la arquitectura JMX y la potencialidad de JConsole, otras estrategias son viables en este interesante mundo de la monitorización JBoss.