2009-06-27 38 views
15

Mam problemy z monitorowaniem zdalnego procesu Tomcat. Próbuję użyć wersji Java 6 z JConsole/JVisualVM.Nie można połączyć się z Tomcat za pomocą VisualVM

Mam jstatd uruchomiony na serwerze zdalnym z odpowiednią polityką bezpieczeństwa. Proces jest uruchamiany, a połączenia TCP są dostępne.

Kiedy próbuję się połączyć przez JConsole, otrzymuję 'Connection Failed:jmxrmi'.

Kiedy próbuję połączyć się za pomocą VisualVM, dodaję nazwę hosta, a moje opcje prawego przycisku myszy to "Dodaj połączenie JMX". Nie jest dla mnie jasne, od doktorów, czy tego właśnie oczekuję. Gdy próbuję się połączyć, otrzymuję:

'Cannot connect using service:jmx:rmi:///jndi/rmi://<host>:<port>/jmxrmi'. 

Więc docs sugerują, tylko muszę mieć jstatd uruchomiony zdalnie monitorować w VisualVM, natomiast UI prosi jmxrmi .. Czy te same? Próbowałem skonfigurować tomcat za pomocą opcji jmx rmi i również timeout, choć wiem, że to nie jest problem z firewallem.

Jeśli komuś udałoby się uzyskać zdalny proces Tomcat załączony w ten sposób i mógł opisać, jak to by mi bardzo pomogło.

Odpowiedz

13

Musisz włączyć rozszerzenia zarządzania w maszynie Tomcat VM. Zazwyczaj oznacza, że ​​przechodząc w coś, takie jak:

-Dcom.sun.management.jmxremote.port=8086 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.authenticate=false 

Oczywiście, jeśli robisz to powyższy sposób upewnić się, że Tomcat nie jest widoczna w Internecie lub port jest za firewallem z dostępem zdalnym lub podejmują podobne środki bezpieczeństwa aby uniknąć przeskanowania i naruszenia portu. W przeciwnym razie użyj opcji uwierzytelniania.

15

Zazwyczaj trzeba upewnić podać adres IP serwera w JAVA_OPTS. W przeciwnym razie wydaje się, że JMX prześle instrukcje do klienta, aby ponownie połączyć się z serwerem na innym porcie, a jeśli nie ma adresu IP do udzielenia klientowi, połączenie nie powiedzie się.

Argument ten brzmi:

-Djava.rmi.server.hostname=1.2.3.4 

można znaleźć więcej szczegółów w tej walk through procesu konfiguracji.

+5

Hej @Tom, pomóż mi przejść przez linki. Duży +10, tankuj! "-Djava.rmi.server.hostname = 1.2.3.4" jest obowiązkowe, jeśli serwer ma różne adaptery (jak w vpn, itp.) – azendh

+0

To działało również dla mnie! Dzięki wielkie! – FSP

+0

Duża pomoc w istocie ... Gracias! –

2

Port JMX zwykle wysyła dane do innego portu, więc musisz znaleźć ten numer portu, wykonując lsof -p -n | grep TCP i włącz uprawnienia do tego portu, a następnie spróbuj połączyć się ze zdalnym agentem JMX.

2

Sam właśnie poradziłem sobie z tym problemem i wymyśliłem to.

Założę się, że problemem są połączenia RMI - nie można przewidzieć, które porty będą używane, a więc nie można uruchomić go z zaporą firewall.

Rozwiązaniem jest użycie serwera proxy ssh:

  1. SSH do okna, gdzie aplikacja jest uruchomiona, ale korzystać z opcji -D tak:

    ssh user @ remotehost -D 9999

    Ten rozpocznie proxy skarpety na komputerze lokalnym na porcie 9999.

  2. Otwarte JVisualVM i preferencji, w ramach „sieci” skonfigurować i t do korzystania z serwera proxy na localhost skarpetki, na porcie 9999.

Jeśli do powyższego, należy być w stanie połączyć się ze zdalnym komputerze jako normalne, a ponieważ cały ruch RMI jest teraz dzieje nad SSH proxy, jest przebijany przez zaporę ogniową i działa ładnie.

Powodzenia :-)

Powiązane problemy