![]() |
Monitoring serwerów aplikacyjnych - Printable Version +- Monitoring Serwerów - Forum o monitoringu infrastruktury IT (https://monitoringserwerow.pl) +-- Forum: MONITORING INFRASTRUKTURY IT (https://monitoringserwerow.pl/forumdisplay.php?fid=1) +--- Forum: op5 Monitor i Nagios (https://monitoringserwerow.pl/forumdisplay.php?fid=12) +--- Thread: Monitoring serwerów aplikacyjnych (/showthread.php?tid=77) |
Monitoring serwerów aplikacyjnych - ArturB - 07-31-2019 Monitoring serwerów aplikacyjnych Częstym problemem do monitorowania jest monitoring tzw. serwerów aplikacyjnych, a w zasadzie maszyny wirtualnej Javy. Przyjrzymy się uniwersalnemu projektowi i jego możliwościom. Projekt ten to jolokia. Jest to JSON JMX Agent, który ma kilka zalet. Między innymi jest wydajny, ale także jest jest przyjazny firewallom jako że może korzystać z używa protokołu http. Autorzy potwierdzają, że przeprowadzili pomyślne testy na różnych wersjach JBossa, WebLogica, Glassfisha, Websphere’a, Tomcata, Jetty, Resin, Jonas, Geronimo, Spring dm Server i Virgo. Także omawiany przez nas temat będzie dość popularny. Sama instalacja jest dość prosta i zajmuje kilka sekund. Ze względu na to że nie znam samej technologii wybór padł na testy na Apache Tomcat 7.0. Proces instalacji polegał na pobraniu z jolokia.org pliku i deploy w Web GUI. Na stronie autorów znajdziemy informację że wystarczy go wrzucić do katalogu webapps na serwerze, tam też później się udałem celem zmienienia nazwy aplikacji z jolokia-war-1.1.2 na jolokia – o dziwo taka zmiana działa. Oczywiście nie musimy się chwalić wszystkim stanem naszego serwera. Edytując webapps/WEB-INF/web.xml możemy po prostu odkomentować fragment: KOD: ZAZNACZ CAŁY Code: <security-constraint> A następnie utworzyć użytkownika na danym serwerze o danej roli. W naszym przypadku w conf/tomcat-users.xml dopisujemy: KOD: ZAZNACZ CAŁY Code: <user username="username" password="password" roles=" Jolokia" /> Nasz agent już działa, dlatego zajmiemy się teraz instalacją klienta. Wybór padł na check_jmx4perl . Główny powód to brak konieczności instalacji Javy na serwerze monitorującym. Drugim powodem jest sposób instalacji KOD: ZAZNACZ CAŁY Code: #cpan –i JMX::Jmx4Perl I część która jest niejako decydująca: KOD: ZAZNACZ CAŁY Code: Jmx4Perl comes with a set of supporting scripts, which A po instalacji mamy dwie możliwości korzystania z check_jmx4perl. Przykłady komend w starym stylu: Uptime w ms - weryfikacja czy serwer jest w stanie się uruchomić KOD: ZAZNACZ CAŁY Code: # check_jmx4perl --url http://127.0.0.1:8080/jolokia-war-1.1.2 --alias RUNTIME_UPTIME --warning 120: --critical 60: Wielkość sterty KOD: ZAZNACZ CAŁY Code: # check_jmx4perl --url http://127.0.0.1:8080/jolokia-war-1.1.2 --alias MEMORY_HEAP_USED --base-alias MEMORY_HEAP_MAX --warning 80 --critical 90 Wielkość stosu KOD: ZAZNACZ CAŁY Code: # check_jmx4perl --url http://127.0.0.1:8080/jolokia-war-1.1.2 --alias MEMORY_NONHEAP_USED --base-alias MEMORY_NONHEAP_MAX --warning 80 --critical 90 SWAP KOD: ZAZNACZ CAŁY Code: # check_jmx4perl --url http://127.0.0.1:8080/jolokia-war-1.1.2 --alias OS_MEMORY_SWAP_FREE --base-alias OS_MEMORY_SWAP_TOTAL --warning 90: --critical 80: Ilość rozpoczętych wątków w ciągu ostatnich 60s KOD: ZAZNACZ CAŁY Code: # check_jmx4perl --url http://127.0.0.1:8080/jolokia-war-1.1.2 --alias THREAD_COUNT_STARTED --delta 60 --warning 50 --critical 90 Ilość wątków KOD: ZAZNACZ CAŁY Code: # check_jmx4perl --url http://127.0.0.1:8080/jolokia-war-1.1.2 --alias THREAD_COUNT --warning 50 --critical 90 Klasy KOD: ZAZNACZ CAŁY Code: # check_jmx4perl --url http://127.0.0.1:8080/jolokia-war-1.1.2 --alias CL_LOADED --warning 2500 --critical 3000 Te przykłady zostały zrealizowane w starej notacji, dodatkowo nie musimy używać aliasów: KOD: ZAZNACZ CAŁY Code: check_jmx4perl --url http://localhost:8888/jolokia \ W celu wyświetlenia wszystkich możliwych aliasów KOD: ZAZNACZ CAŁY Code: check_jmx4perl aliases Na czym polega jednak nowa notacja na tworzeniu plików konfiguracyjnych, zawierających opis serwerów: KOD: ZAZNACZ CAŁY Code: <Server lokalny> Przypominamy sobie konfigurację jolokia, która umożliwia wymuszenie autentyfikacji. i konfigurację checków - przykład z labs.consol.de KOD: ZAZNACZ CAŁY Code: # Hosts teraz wywołanie sprowadza się do jednej nagiosowej komendy: KOD: ZAZNACZ CAŁY Code: command_line check_jmx4perl --config /opt/plugins/custom/emca/jmx4perl/jmx4perl.cfg --server lokalny --check Check_albo_MultiCheck Opcjonalne Argumenty. Myślę że wspólnie zgodzimy się że każde podejście ma swoje dobre strony. Dla mnie, jako osoby która ma szczątkową wiedzę na temat aplikacji Javowych stary sposób wydaje się jaśniejszy, niewymagający dodatkowych plików. W tym momencie myślę że zostało powiedziane dość sporo na temat monitoringu JVM. Temat monitorowania serwerów aplikacji JEE jest coraz częściej poruszany przez naszych klientów. Z tego też powodu, chce pokazać realizację tego problemu na przykładzie gotowych serwisów w op5 monitorze wykorzystując technologię Java Management Extensions (JMX). [attachment=55]
Przyjrzyjmy się niektórym prezentowanym wartościom.Pierwszą z nich bez wątpienia jest uptime. Na pierwszy rzut oka można by zapytać po co nam taka informacja. [attachment=54]
Odpowiedź w przypadku tej technologii jest stosunkowo prosta. Nieobsłużone wyjątki i inne błędy w aplikacji mogą powodować restarty maszyny wirtualnej. Jeśli maszyna restartuje się co jakiś czas dobrze abyśmy o tym wiedzieli. A dlaczego pozostałe parametry? Każdy kto miał styczność z Javą, ma pewne, słuszne skojarzenia. Na pierwszym miejscu zapewne są klasy, bo Java jest idealnym przykładem języka zorientowanego obiektowo. Dlatego też monitorujemy ilość załadowanych klas. [attachment=53]
Kolejną cechą technologii jest wielowątkowość. Dlatego monitorujemy ilość wątków, a także ilość nowych wątków w określonym czasie. [attachment=52]
[attachment=51]
w naszym przypadku maszyna służy jedynie prezentacji przez co nie otwiera nowych wątków
Ostatnim skojarzeniem programisty powinny być dwa obszary pamięci, którymi jest stos i sterta. W przypadku Javy nie ma możliwości utworzenia obiektu na stosie (który również monitorujemy), dlatego przedstawiam wykres zajętości sterty. [attachment=50] |