Lo siento si esto es una repetición de una pregunta hecha anteriormente, pero he probado las soluciones proporcionadas aquí y en todas partes y ninguna de ellas parece funcionar para mí.Monitoreo remoto de un servidor Tomcat 7 usando VisualVM y SSH
Escenario: Tengo que perfilar un servidor Tomcat 7 de producción que se encuentre detrás de un cortafuegos. Solo tengo acceso SSH a este servidor. La herramienta de creación de perfiles es Visualvm y estos servidores no tienen una GUI instalada. Tanto el servidor como la máquina que estoy tratando de conectar ejecutan el servidor Ubuntu 10.04 LTS.
Posible solución: Usando VisualVM sobre túneles SSH parece ser posible y el enlace a continuación da una guía muy detallada para hacer esto:
También he añadido un archivo jmxremote.access a la dir/conf en Tomcat con las dos líneas siguientes:
monitorRole readonly
controlRole readwrite
Problema: he seguido el paso s proporcionado en el artículo y todo parece estar bien. Puedo conectarme a los puertos jmx en el servidor localmente (desde el servidor) usando jmxterm y la cadena de conexión dada en la guía.
Configuré tomcat local según la guía como prueba y Visualvm no tuvo problemas para conectarse a esta instancia de tomcat utilizando la cadena de conexión.
Sin embargo, VisualVM no se conectará al servidor remoto a través del túnel SSH. Probé JConsole como lo más simple y tiene mejores facilidades de registro y me da la siguiente secuencia de mensajes:
FINER: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi://localhost:12009/jndi/rmi://localhost:12008/jmxrmi] connecting...
FINER: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi://localhost:12009/jndi/rmi://localhost:12008/jmxrmi] finding stub...
FINER: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi://localhost:12009/jndi/rmi://localhost:12008/jmxrmi] connecting stub...
FINER: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi://localhost:12009/jndi/rmi://localhost:12008/jmxrmi] getting connection...
FINER: [javax.management.remote.rmi.RMIConnector: jmxServiceURL=service:jmx:rmi://localhost:12009/jndi/rmi://localhost:12008/jmxrmi] failed to connect: java.rmi.NoSuchObjectException: no such object in table
alguna idea de lo que he hecho mal aquí? ¡Cualquier ayuda es muy apreciada!
Gracias.
Nicholas, gracias por la respuesta. Tengo localhost: 12008 y localhost: 12009 tunelizados a los puertos correspondientes en el servidor tomcat. Simplemente no está funcionando. Tomé su sugerencia para probar JMXMP y funciona magníficamente. Gracias. – ChamaraG