jmx/jstatd Zugriff auf remote-Maschine über einen ssh-tunnel

Ich verwenden möchte, visualvm-app über einen ssh-tunnel (auf einer EC2-Maschine) mit jmx ODER jstatd. Wie mache ich das? Hier ist eine Liste von dem, was wurde versucht (und sind gescheitert):
(BTW: wenn visual vm ist nicht angemessen, wie ich finde, memory leaks auf einer remote-Maschine?)

jstatd: Versuch:

Ich die jstatd-server, die für die EC2-Maschine (app war bereits ausgeführt)
Dann habe ich ein tunnel Zuordnung für einen lokalen port 3333 auf remote-port 1099
In VisualVM ich versucht, die Verbindung mit jstatd auf port 3333
... keiner der Prozesse, die auf EC2 zeigte sich

Dieser link sagt, dass jstatd eröffnet einen anderen port:
http://rukuro-blog.heroku.com/2011/06/30/monitoring-remote-java-applications-with-visualvm
... also ich getunnelt, der port vom lokalen host auf den remote.
Ich neu gestartet, visual vm ... immer noch nichts

Als ich versuchte listing-Prozesse laufen aus EC2 mit dem darauf folgenden Befehl ein:

jps -l -m -v rmi://localhost

... Habe ich eine Liste der Prozesse

Aufgeführt, wenn ich es auf meinem Rechner zu Hause mit

jps -l -m -v rmi://localhost:3333

.... Ich bekam keine ! Also, ist der rmi-port, der nicht getunnelt mit jstatd-port (3333) ... ?

die jmx-Versuch:

Startete ich die Anwendung auf dem remote-Computer mit dem folgenden Befehl:

java -Dcom.sun.management.jmxremote.port=3333 \
     -Dcom.sun.management.jmxremote.ssl=false \
     -Dcom.sun.management.jmxremote.authenticate=false\
        -cp :post/* <appName>

... die app funktioniert, so dass ich getunnelt lokalen port 3333 auf remote-3333

Dann habe ich versucht, die Einrichtung eines jmx-Verbindung zu localhost:3333 von visual vm-interface:
... es erscheint die Fehlermeldung:

cannot connect to localhost:3333 using service:jmx:rmi:///jndi/rmi://localhost:3333/jmxrmi

Wenn ich brauche, um einen link zu entfernen RMI-server-ich bin mir nicht sicher, wie es zu tun.

JMXMP Versuch:

Diese hält, was Sie verspricht, aber etwas ist nicht ganz richtig:

Zuerst habe ich die jmx_remote jar in den classpath und die Anwendung auf dem remote-Rechner mit dem selben Kommando wie in der JMX-Fall, den ich oben zeigte. Ich fand die jar-Datei im oracle download-link

Richte ich einen ssh-tunnel vom lokalen port 3333 auf remote-port 3333. Dann fing ich an, visualvm mit der gleichen jmx_remote Datei in der calsspath.

visualvm -cp:a ~/jmx/jmxremote_optional.jar

Dann habe ich versucht zu verbinden visualvm auf dem remote-server mit:

service:jmx:jmxmp://localhost:3333

Nun visual vm scheint zu versuchen, eine Verbindung auf unbestimmte Zeit. Es zeigt "Hinzufügen service:jmx:jmxp://localhost:3333" in der Statusleiste ... und continutes zu tun, bis ich die shutdown-Anwendung auf dem remote-Ende auf die Zeit, die es wirft ein popup, die sagen, dass es nicht auf' verbinden mit dem server.

Auf mit SOCKEN:

Meine versuche, mit beiden JMX und jstatd gescheitert.

Ich bin nicht sicher, ob der SOCKS-proxy zu arbeiten, also hier ist, wie ich eine Verbindung herstellen wollte:

ssh -i ~/.ssh/starter.pem -v -D 9696 user@host

Nur der Vollständigkeit halber, ich begann den Befehl auf dem anderen Ende mit:

    java -Dcom.sun.management.jmxremote\
 -Dcom.sun.management.jmxremote.ssl=false\
 -Dcom.sun.management.jmxremote.authenticate=false\
 -Dcom.sun.management.jmxremote.port=3333 <app>

Und auf dem lokalen Ende ich die visualvm-Verbindung per dieser LINK zu VisualVm-Hilfe-Seite.

Mit der JMX-Verbindung, habe ich den Computernamen und den port durch einen Rechtsklick auf den host auf visualvm und fillng in den host-port, wenn es fordert mich. An diesem Punkt der Statusleiste am unteren Rand zeigt visualvm versucht, eine Verbindung zu der remote-Maschine und nach ein paar Minuten gelingt es nicht.

Mit jstatd-Verbindung, die ich erwartet habe-remote-Prozesse werden automatisch angezeigt. Dies ist nicht geschehen ... es gab keine Fehlermeldungen oder irgendetwas.

Auf die Socken Seite die folgenden Meldungen wiederholen sich zyklisch:

debug1: Connection to port 9696 forwarding to socks port 0 requested.
debug1: channel 2: new [dynamic-tcpip]
channel 3: open failed: connect failed: Connection timed out
debug1: channel 3: free: direct-tcpip: listening port 9696 for 50.16.35.69 port 3333, connect from 127.0.0.1 port 43909, nchannels 4
debug1: Connection to port 9696 forwarding to socks port 0 requested.
debug1: channel 3: new [dynamic-tcpip]
channel 2: open failed: connect failed: Connection timed out
debug1: channel 2: free: direct-tcpip: listening port 9696 for 50.16.35.69 port 1099, connect from 127.0.0.1 port 44644, nchannels 4

Frage ich mich, ob dies hat zu tun mit den Socken-Kanal. Ich habe getunnelt einzelne ports auf dem remote-Rechner vor, so kann ich mir nicht vorstellen, dass es ein Problem bei der Konfiguration für das tunneling. Ich bin mit ubuntu-linux auf beiden Seiten.

Vielen Dank für das Lesen 🙂

FYI, ich habe mich für XFCE und tightvnc und lief visualvm auf der remote-Maschine.

InformationsquelleAutor fodon | 2012-10-10

Schreibe einen Kommentar