Java Management Extensions ( JMX ) es una tecnología Java que proporciona herramientas para administrar y monitorear aplicaciones , objetos del sistema, dispositivos (como impresoras ) y redes orientadas a servicios. Estos recursos están representados por objetos llamados MBeans (para Managed Bean ). En la API, las clases se pueden cargar e instanciar dinámicamente. Las aplicaciones de gestión y supervisión se pueden diseñar y desarrollar utilizando Java Dynamic Management Kit. [1]
JSR 003 [2] del Java Community Process definió JMX 1.0, 1.1 y 1.2. JMX 2.0 se estaba desarrollando bajo JSR 255, pero este JSR se retiró posteriormente. [3] El JMX Remote API 1.0 para administración y monitoreo remotos está especificado por JSR 160. [4] Se estaba desarrollando una extensión de JMX Remote API para servicios web bajo JSR 262. [5]
Adoptado desde el principio por la comunidad J2EE , JMX ha sido parte de J2SE desde la versión 5.0. "JMX" es una marca comercial de Oracle Corporation .
Arquitectura
JMX utiliza una arquitectura de tres niveles:
- El nivel de sonda , también llamado nivel de instrumentación , contiene las sondas (llamadas MBeans ) que instrumentan los recursos
- El nivel de agente , o MBeanServer, el núcleo de JMX. Actúa como intermediario entre el MBean y las aplicaciones.
- El nivel de administración remota permite que las aplicaciones remotas accedan al MBeanServer a través de conectores y adaptadores. Un conector proporciona acceso remoto completo a la API de MBeanServer utilizando varias comunicaciones ( RMI , IIOP , JMS , WS- * …), mientras que un adaptador adapta la API a otro protocolo ( SNMP ,…) oa una GUI basada en web ( HTML / HTTP , WML / HTTP ,…).
Las aplicaciones pueden ser consolas genéricas (como JConsole [6] y MC4J [7] ) o aplicaciones específicas de dominio (monitoreo). Las aplicaciones externas pueden interactuar con los MBeans mediante el uso de conectores JMX y adaptadores de protocolo. Los conectores sirven para conectar un agente con una aplicación de gestión remota habilitada para JMX. Esta forma de comunicación implica un conector en el agente JMX y un cliente conector en la aplicación de gestión.
Los adaptadores de protocolo proporcionan una vista de gestión del agente JMX a través de un protocolo determinado. Las aplicaciones de gestión que se conectan a un adaptador de protocolo suelen ser específicas del protocolo dado.
Frijoles gestionados
Un bean administrado , a veces denominado simplemente MBean , es un tipo de JavaBean , creado con inyección de dependencia . Los beans gestionados se utilizan particularmente en la tecnología Java Management Extensions, pero con Java EE 6 la especificación proporciona un significado más detallado de un bean gestionado.
El MBean representa un recurso que se ejecuta en la máquina virtual Java , como una aplicación o un servicio técnico Java EE (monitor transaccional, controlador JDBC, etc.). Se pueden utilizar para recopilar estadísticas sobre cuestiones como el rendimiento, el uso de recursos o problemas (extracción); para obtener y establecer configuraciones o propiedades de la aplicación (push / pull); y notificar eventos como fallas o cambios de estado (push).
Java EE 6 establece que un bean gestionado es un bean que se implementa mediante una clase Java, que se denomina su clase de bean. Una clase Java de nivel superior es un bean gestionado si se define como bean gestionado por cualquier otra especificación de tecnología Java EE (por ejemplo, la especificación de tecnología JavaServer Faces ), o si cumple todas las condiciones siguientes:
- No es una clase interna no estática.
- Es una clase concreta o está anotada
@Decorator
. - No se anota con una anotación de definición de componente EJB ni se declara como una clase de bean EJB en
ejb-jar.xml
.
No se requiere ninguna declaración especial, como una anotación, para definir un bean administrado.
Un MBean puede notificar al MBeanServer de sus cambios internos (para los atributos) implementando el javax.management.NotificationEmitter
. La aplicación interesada en los cambios del MBean registra un oyente ( javax.management.NotificationListener
) en el MBeanServer. Tenga en cuenta que JMX no garantiza que los oyentes reciban todas las notificaciones. [8]
Tipos
Hay dos tipos básicos de MBean:
- Los MBeans estándar implementan una interfaz comercial que contiene establecedores y captadores para los atributos y las operaciones (es decir, métodos).
- Los MBeans dinámicos implementan la
javax.management.DynamicMBean
interfaz que proporciona una forma de enumerar los atributos y operaciones, y de obtener y establecer los valores de los atributos.
Los tipos adicionales son Open MBeans , Model MBeans y Monitor MBeans . Los MBeans abiertos son MBeans dinámicos que se basan en los tipos de datos básicos. Se explican por sí mismos y son más fáciles de usar. Los MBeans de modelo son MBeans dinámicos que se pueden configurar durante el tiempo de ejecución. También se proporciona una clase MBean genérica para configurar dinámicamente los recursos durante el tiempo de ejecución del programa.
Un MXBean ( Platform MBean ) es un tipo especial de MBean que reifica los subsistemas de la máquina virtual Java , como recolección de basura , compilación JIT , grupos de memoria , subprocesos múltiples , etc.
Un MLet ( subprograma de administración ) es una utilidad MBean para cargar, crear instancias y registrar MBeans en un MBeanServer a partir de una descripción XML . El formato del descriptor XML es: [9]
OBJETO = '' serfile '' ódigo> ARCHIVE = '' archiveList '' [CODEBASE = '' codebaseURL ''] [NAME = '' objectName ''] [VERSION = '' versión ''] > [arglist]
Apoyo
JMX es compatible en varios niveles por diferentes proveedores:
- JMX es compatible con servidores de aplicaciones Java como OpenCloud Rhino Application Server [1] , JBoss , JOnAS , WebSphere Application Server , WebLogic , SAP NetWeaver Application Server , Oracle Application Server 10g y Sun Java System Application Server .
- JMX es compatible con UnboundID Directory Server, Directory Proxy Server y Synchronization Server. [10]
- Gestión de los sistemas de herramientas que soportan el protocolo incluyen Empirix OneSight, GroundWork monitor, Hyperic , HP OpenView , IBM Director , SNTI Geneos, Nimsoft NMS , OpenNMS , [11] Zabbix , Zenoss Core , y Zyrion, SolarWinds , el tiempo de actividad de Infraestructura del monitor , y LogicMonitor. [12]
- JMX también es compatible con contenedores de servlets como Apache Tomcat . [13] y Jetty (servidor web)
- MX4J [2] es JMX de código abierto para informática empresarial.
- jManage [3] es una consola JMX de nivel empresarial de código abierto con interfaces web y de línea de comandos.
- MC4J [4] es una consola visual de código abierto para conectarse a servidores compatibles con JMX
- snmpAdaptor4j [5] es un código abierto que proporciona un acceso simple a MBeans a través del protocolo SNMP.
- jvmtop es una herramienta de monitoreo JMX de código abierto liviana para la línea de comandos
- Prometheus puede ingerir datos JMX a través del exportador JMX [14] que expone métricas en formato Prometheus.
Ver también
- Jini
- Administración de redes
- Protocolo Simple de Manejo de Red
Referencias
- ^ "Descripción general del kit de administración dinámica de Java" . docs.oracle.com . Consultado el 12 de enero de 2021 .
- ^ JSR 003: Especificación de extensiones de administración de JavaTM (JMXTM)
- ^ JSR 255: Especificación de extensiones de administración de JavaTM (JMXTM), versión 2.0
- ^ JSR 160: API remota de JavaTM Management Extensions (JMX)
- ^ JSR 262: Conector de servicios web para agentes de Java Management Extensions (JMX)
- ^ Uso de JConsole para monitorear aplicaciones
- ^ "El proyecto MC4J crea software de gestión para servidores de aplicaciones J2EE y otras aplicaciones Java" . Archivado desde el original el 23 de marzo de 2007 . Consultado el 27 de agosto de 2006 .
- ^ Extensiones de administración de Java (JMX) - Mejores prácticas
- ^ "MLet (Java 2 Platform SE 5.0)" . Sun Microsystems . Consultado el 22 de junio de 2008 .
- ^ UnboundID Corp. Archivado el 6 de marzo de 2012 en la Wayback Machine.
- ^ http://www.opennms.org/wiki/Category:JMX
- ^ "Recolección de datos JMX" . www.logicmonitor.com . Consultado el 20 de noviembre de 2020 .
- ^ Apache Tomcat 6.0: Monitoreo y administración de Tomcat (manual de Tomcat)
- ^ https://github.com/prometheus/jmx_exporter
Otras lecturas
Artículos
- " Habilitación de arquitecturas de componentes con JMX " por Marc Fleury y Juha Lindfors
- " Presentamos una nueva API de administración J2EE neutral para el proveedor " por Andreas Schaefer
- "Java en la esfera de la gestión" por Max Goff 1999
- 20 de oct
- 20 de noviembre
- 29 de diciembre
- JMX / JBoss - El diseño de microkernel
- " Administre sus aplicaciones habilitadas para JMX con jManage 1.0 " por Rakesh Kalra 16 de enero de 2006
- " Gestión de sistemas J2EE con JMX y JUnit " por Lucas McGregor
- Descripción general de supervisión y gestión de Sun Java
- El tutorial de Java EE 6: Acerca de los beans gestionados
Libros
- Benjamin G Sullins, Mark B Whipple: JMX en acción: También obtendrá su primera aplicación JMX en funcionamiento , Manning Publications Co. 2002, ISBN 1-930110-56-1
- J. Steven Perry : Extensiones de administración de Java , O'Reilly, ISBN 0-596-00245-9
- Jeff Hanson : Conexión de clientes y servidores JMX: comprensión de las extensiones de administración de Java , APress LP, ISBN 1-59059-101-1
- Marc Fleury , Juha Lindfors : JMX: Gestión de J2EE con extensiones de gestión de Java , Sams Publishing, ISBN 0-672-32288-9
enlaces externos
- JMX 1.4 (JMX 1.4, parte de Java 6)
- JMX en JBoss.com
- JMX en www.oracle.com
- JSR 255 (JMX 2.0)
- JSR 3 (JMX 1.0, 1.1 y 1.2)