¿Qué monitorea con JMX en su aplicación Java de producción?


Esta pregunta no se trata de cómo funciona JMX o qué hace JMX. Esta pregunta se refiere a las aplicaciones de JMX en un entorno de servidor de aplicaciones estándar en producción. Tampoco es para un servidor específico.

¿Qué monitorea con JMX en un entorno de producción que ejecuta la pila estándar de servicios Java EE: acceso a bases de datos (JDBC y JPA), EJBs de sesión, JMS, servidor web, servicios web, servicios habilitados para AJAX?

Author: Peter Mortensen, 0000-00-00

5 answers

En el nivel JVM, monitoreo la duración de la recolección de basura por minuto,

En el nivel Servlet Container, monitoreo el número de solicitudes , el número de excepciones (códigos 4xx y 5xx), la suma de la duración de la solicitud por minuto,

En el nivel SOAP, monitoreo el número de invocaciones, el número de excepciones y la suma de invocaciones por operación y por minuto,

En el nivel Web MVC Framework , monitoreo el número de invocaciones, número de excepciones y suma de invocaciones por acción y por minuto,

Para los pools (datasource,thread pool / executor service), superviso el recuento activo,

Para las conexiones JMS, monitoreo el número de mensajes enviados y recibidos por minuto, y el número de receptores activos,

Para EhCache , monitoreo el número de entradas en la caché, el número de aciertos y errores por minuto,

En el nivel aplicación de negocio, I se desarrolló una anotación @Profiled para monitorear el número de invocaciones, el número de excepciones y la duración total por minuto.

Si estás interesado en este tipo de métricas, hemos desarrollado muchos extras JMX (dbcp, util.concurrent, jms, @profiled annotation) y empaquetó todo esto con Spring XML namespace based configuration, Hyperic HQ plugins, monitoring jsp pages, etc

Los detalles están aquí : http://code.google.com/p/xebia-france/wiki/XebiaManagementExtras .

Todo este código está licenciado bajo la Business friendly Open Source Apache Software License 2, implementado en Maven Central Repository, descargable como jar y disponible en un servidor Subversion de Google Code para ser integrado de la manera que desee.

Espero que esto ayude,

Cyrille (Xebia)

 28
Author: Cyrille Le Clerc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-11-23 22:28:46

He utilizado JMX para exponer un MBean que permitirá el ajuste de los niveles Log4J Logger dinámicamente. Esto resultó ser muy útil para una aplicación en clúster donde no queríamos tener que modificar el archivo de configuración log4j en todos los nodos para cambiar el nivel de registro de un registrador especificado.

 8
Author: Rob Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-05 22:16:19

Mi requisito más común es monitorear los recuentos de subprocesos y la memoria. Mi trabajo más reciente involucró el envío de servidores con muchos subprocesos a cuadrículas, y era importante monitorear el uso del subproceso (una medida de cuánto trabajo de envío estaba llevando a cabo el servidor). La memoria está estrechamente ligada al uso del subproceso (en parte debido a los objetos asociados con cada subproceso, en parte debido a la asignación implícita de la pila por subproceso).

También habilitamos los datos de la cola de carga de trabajo con JMX. Lo anterior monitoreado síntomas o efectos de los elementos de trabajo en cola, pero en última instancia, queríamos monitorear las colas reales de trabajo. Vale la pena exponer los componentes clave a través de JMX para obtener una perspectiva más clara de lo que está pasando.

 5
Author: Brian Agnew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-05 16:08:18

En un proyecto anterior, monitoreamos los recuentos de subprocesos y la memoria, el número de sesiones HTTP y el tamaño de las cachés de consultas. El otro interés de JMX con cachés es que puede forzar un color.

 1
Author: Gaël Marziou,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-05 20:38:04

Un poco de OT pero puedes usar JMX para un poco más. Actualmente estoy usando JMX para hot deploy / componentes hot fix. Agregue dinámicamente funcionalidad a los componentes existentes(filtro, etc.). JMX es bueno para la comunicación entre componentes en la misma JVM. Cada componente que creo está instrumentado para usar JMX.

 1
Author: Javamann,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-11-05 22:30:46