2010-01-07 9 views
11

Tenemos una aplicación web Java y nos gustaría configurar un control básico con el fin de ampliar esta monitorización en el futuro. Nuestro plan es el siguiente:.Monitoreo de una aplicación web Java: ¿es JMX la opción correcta?

(1) Recopilar información genérica (por ejemplo, la memoria y las discusiones) sobre la máquina virtual del contenedor web que se ejecuta la aplicación en

(2) Supervisar el "estado" de la solicitud. Esto es bastante impreciso, pero al menos nos gustaría ver si la aplicación web aún está activa y puede responder a las solicitudes.

(3) En el futuro nos gustaría recopilar más información específica de nuestra aplicación. De nuevo, esto es bastante vago, pero puede suponer que es posible que deseemos que determinadas estadísticas recogidas internamente por la aplicación estén disponibles para el personal de soporte.

Por lo general, la aplicación web se implementará en un entorno Tomcat 5.5 o 6. Una búsqueda rápida en la web muestra que JMX se puede habilitar para Tomcat y que JConsole se puede usar para conectarse al servidor. Esto nos da mucha información básica que resuelve el punto (1). Además, hay información disponible en la sección de MBeans para "Catalina" y profundizando en esto puedo, al menos, por ejemplo, ver cuántas solicitudes ha recibido un servlet en particular. Esto no es exactamente lo que queremos para el punto (2), pero al menos nos da cierta información. Parece que hay bastante información allí, pero es bastante difícil de interpretar utilizando JConsole. Tal vez haya una mejor herramienta para interpretar los MBeans expuestos por Tomcat.

Para el punto (3), parece, a primera vista, que podríamos escribir nuestros propios MBeans y luego ponerlos a disposición de algo como JConsole. Personalmente, esto me implicaría aprender sobre JMX, lo cual estoy feliz de hacer, pero tengo una preocupación. Después de mirar alrededor noto que la mayoría de los libros de texto sobre el tema no se han actualizado durante varios años y las herramientas de código abierto parecen estar languideciendo sin actualizaciones recientes. Entonces mi pregunta principal es simple. ¿Cuáles son sus opiniones sobre JMX? ¿Tiene un futuro o es/ha sido reemplazado por otra cosa? Dado que ya tenemos nuestra aplicación web, pero estamos comenzando desde cero para la consola de administración, ¿deberíamos elegir JMX o hay algo más apropiado con un futuro mejor por delante?

Hago esta pregunta sin ningún interés personal, simplemente me interesa escuchar sus opiniones y experiencias. Estoy seguro de que no hay una respuesta correcta, pero creo que una discusión informada sería útil.

Gracias de antemano,

Adam.

Respuesta

8

JMX es ciertamente una buena solución aquí. No me preocuparía languideciendo. La mayoría de las empresas en las que he trabajado recientemente usan (o tienen planes para usar) JMX, y tendría que escuchar un argumento bastante convincente antes de elegir algo más en el mundo de Java. Es fácil escribir clientes (soluciones de monitoreo) y puede devolver datos complejos con mucha facilidad. La mayoría de los componentes de terceros también admiten la supervisión a través de JMX.

Tenga en cuenta que es posible que desee considerar la integración con cualquier solución de administración existente (por ejemplo, Nagios, BNC Patrol, HP Openview, etc.) también. Puede que no sean tan conscientes de Java, sino que prefieran pruebas como la conectividad HTTP simple para probar si un sitio web está activo (fácil de usar Nagios) o integración usando SNMP (que Openview habla de forma nativa).

+1

Gracias. ¡Es bueno escuchar su opinión positiva sobre el futuro de JMX! – Adam

+0

@Brian ¿Jprofiler utiliza internamente JMX? – Geek

1

Si corresponde a su situación (Java 6 actualización 10 JDK o posterior, más en la misma máquina), considere usar jvisualvm ya que puede excavar incluso más profundo que JConsole.

Puede encontrar que la manera más fácil de hacer lo que necesita es un complemento para jvisualvm conocer su aplicación

+0

JVisualVM suena como una buena idea. Supongo que el requisito para JDK 6 solo se encuentra en la máquina local que ejecuta JVisualVM y no se aplica a la JVM para el contenedor de la aplicación web. Dado mi punto (2), ¿conoces un complemento para JVisualVM que hace que sea más fácil leer la información básica de MBean proporcionada por Tomcat? – Adam

+0

Su vida será mucho más fácil si puede ejecutar visualvm en el mismo host que el contenedor, ya que esto permite el acceso a JVM sin preparación. Sin embargo, puede hacer acceso remoto con encantamientos adecuados a la JVM al inicio. Java 6 funciona mejor. Con respecto a JMX, agregue el complemento de VisualVM-MBeans usando Tools-> Plugins (no lo he probado recientemente, pero funcionó hace un tiempo). –

+0

Gracias. He probado el complemento VisualVM-MBeans y parece dar básicamente la misma vista de los MBeans que ofrece JConsole (que es, por supuesto, mejor que nada). ¿Alguien conoce un plugin específico para Tomcat? – Adam

Cuestiones relacionadas