Scusate se questa è una ripetizione di una domanda posta in precedenza, ma ho provato le soluzioni fornite qui e altrove e nessuna sembra funzionare per me.Monitoraggio remoto di un server Tomcat 7 con VisualVM e SSH
Scenario: Devo profilare un server Tomcat 7 di produzione che si trova dietro un firewall. Ho solo accesso SSH a questo server. Lo strumento di profilazione scelto è Visualvm e questi server non hanno una GUI installata. Sia il server che la macchina che sto cercando di connettersi eseguono il server LTS di Ubuntu 10.04.
Possibile soluzione: Usando VisualVM sopra tunnel SSH sembra possibile e il link indicato di seguito fornisce una guida abbastanza dettagliata per fare questo:
Inoltre ho aggiunto un file jmxremote.access al dir/conf in Tomcat con le seguenti due righe:
monitorRole readonly
controlRole readwrite
Problema: ho seguito passo s fornito nell'articolo e tutto sembra andare bene. Posso connettermi alle porte jmx nel server localmente (dal server) usando jmxterm e la stringa di connessione fornita nella guida.
Ho configurato tomcat locale come da guida come test e Visualvm non ha avuto problemi a connettersi a questa istanza di tomcat utilizzando la stringa di connessione.
Tuttavia, VisualVM non si collegherà al server remoto tramite il tunnel SSH. Ho provato JConsole quanto più semplice e ha una migliore funzionalità di registrazione e ottengo la seguente sequenza di messaggi:
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
Tutte le idee su ciò che ho fatto di sbagliato qui? Qualsiasi aiuto è molto apprezzato!
Grazie.
Nicholas, grazie per la risposta. Ho sia localhost: 12008 e localhost: 12009 tunneled alle porte corrispondenti sul server tomcat. Semplicemente non funziona. Ho seguito il tuo suggerimento per provare JMXMP e funziona magnificamente. Grazie. – ChamaraG