2010-01-07 20 views
11

Mamy aplikację internetową Java i chcielibyśmy ustawić podstawowe monitorowanie w celu rozszerzenia tego monitorowania w przyszłości. Nasz plan jest następujący:.Monitorowanie aplikacji internetowej Java - czy JMX jest właściwym wyborem?

(1) Zbieranie informacji rodzajowe (np pamięć i wątków) o maszynie wirtualnej pojemnika internetowej, że aplikacja jest uruchomiona w

(2) Monitorowanie „stan” w podanie. Jest to raczej niejasne, ale przynajmniej chcielibyśmy sprawdzić, czy aplikacja internetowa wciąż żyje i może odpowiadać na żądania.

(3) W przyszłości chcielibyśmy zebrać więcej informacji, które są specyficzne dla naszej aplikacji. Ponownie jest to mało precyzyjne, ale można założyć, że możemy chcieć, aby pewne statystyki były gromadzone wewnętrznie dzięki aplikacji dostępnej dla personelu pomocniczego.

Zazwyczaj aplikacja internetowa zostanie wdrożona w środowisku Tomcat 5.5 lub 6. Szybkie wyszukiwanie w Internecie pokazuje, że JMX może być włączony dla Tomcat i że JConsole może być następnie użyte do połączenia z serwerem. Daje nam to wiele podstawowych informacji, które rozwiązują punkt (1). Ponadto niektóre informacje są dostępne w sekcji MBeans dla "Catalina" i odwiertu na tym mogę przynajmniej, na przykład, zobaczyć, ile wniosków otrzymał konkretny serwlet. Nie jest to dokładnie to, czego chcemy dla punktu (2), ale przynajmniej podaje nam pewne informacje. Wydaje się, że jest tam sporo informacji, ale dość trudno interpretować za pomocą JConsole. Być może istnieje lepsze narzędzie do interpretacji MBean ujawnionych przez Tomcat.

Dla punktu (3), na pierwszy rzut oka wydaje się, że moglibyśmy napisać nasze własne MBeany, a następnie udostępnić je dla czegoś takiego jak JConsole. Osobiście angażowałoby mnie to poznanie JMX, z czego jestem zadowolony, ale mam obawy. Rozglądając się wokół zauważam, że większość podręczników na ten temat nie była aktualizowana od kilku lat, a narzędzia open source wydają się marnieć bez najnowszych aktualizacji. Moje główne pytanie jest proste. Jakie są Twoje opinie na temat JMX? Czy ma przyszłość, czy jest, czy została zastąpiona przez coś innego? Biorąc pod uwagę, że mamy już naszą aplikację internetową, ale zaczynamy od zera dla konsoli zarządzania, czy powinniśmy wybrać JMX, czy jest coś bardziej odpowiedniego z lepszą przyszłością?

Zadaję to pytanie bez szlifu osobistego, po prostu chcę poznać twoje opinie i doświadczenia. Jestem pewien, że nie ma jednej poprawnej odpowiedzi, ale myślę, że przydatna byłaby przemyślana dyskusja.

Z góry dziękuję,

Adam.

Odpowiedz

8

JMX to z pewnością dobre rozwiązanie. Nie martwiłbym się, że to marnieje. Większość przedsiębiorstw, w których pracowałem ostatnio, używa (lub ma zamiar używać) JMX, i musiałbym usłyszeć całkiem przekonującą argumentację przed wyborem czegoś innego w świecie Java. Łatwo jest pisać dla niego klientów (rozwiązania monitorujące) i bardzo łatwo można zwrócić złożone dane. Większość komponentów zewnętrznych obsługuje również monitorowanie za pośrednictwem JMX.

Pamiętaj, że warto rozważyć integrację z dowolnymi istniejącymi rozwiązaniami do zarządzania (np. Nagios, BNC Patrol, HP Openview itp.). Mogą nie być tak dobrze zaznajomieni z Javą, ale wolą testy takie jak prosta łączność HTTP do testowania, jeśli strona internetowa jest uruchomiona (łatwe korzystanie z Nagios), lub integracja za pomocą SNMP (którą Openview mówi natywnie).

+1

Dzięki. Dobrze jest usłyszeć twój pozytywny pogląd na przyszłość JMX! – Adam

+0

@Brian Czy Jprofiler używa wewnętrznie JMX? – Geek

1

Jeśli dotyczy twojej sytuacji (Java 6 aktualizacja 10 JDK lub nowsza, plus na tym samym komputerze), należy rozważyć użycie jvisualvm, ponieważ może wykopać nawet głębiej niż JConsole.

Może się okazać, że najłatwiejszym sposobem zrobienia tego, czego potrzebujesz, jest wtyczka do jvisualvm znająca Twoją aplikację

+0

JVisualVM brzmi jak dobry pomysł. Zakładam, że wymóg dotyczący JDK 6 jest dostępny tylko na maszynie lokalnej, na której działa JVisualVM i nie ma zastosowania do JVM dla kontenera aplikacji WWW. Biorąc pod uwagę mój punkt (2), czy znasz wtyczkę do JVisualVM, która ułatwia odczytanie podstawowych informacji MBean dostarczonych przez Tomcat? – Adam

+0

Twoje życie będzie o wiele łatwiejsze, jeśli możesz uruchomić visualvm na tym samym hoście co kontener, ponieważ umożliwia to dostęp do nieprzygotowanych maszyn JVM. Możesz jednak zdalnie uzyskać dostęp za pomocą odpowiednich zaklęć do maszyny JVM podczas uruchamiania. Java 6 działa najlepiej. Jeśli chodzi o JMX, dodaj wtyczkę VisualVM-MBeans za pomocą Narzędzia-> Wtyczki (ostatnio nie testowałem, ale działało to dawno temu). –

+0

Dzięki. Próbowałem wtyczkę VisualVM-MBeans i wydaje się, że daje zasadniczo ten sam widok MBeans podany przez JConsole (co jest oczywiście lepsze niż nic). Czy ktoś jest świadomy wtyczki specyficznej dla Tomcata? – Adam