Logi w serwerze aplikacji EuroAP – cz. I
„Prawdziwy admin najpierw sprawdza logi” – to motto wysmarowałam czerwonym markerem na okładce podręcznika na moim pierwszym szkoleniu z administrowania serwerami aplikacji. Tam też raz za razem przekonywałam się, że logi często podają rozwiązania problemów niemalże na tacy.
„Prawdziwy admin najpierw sprawdza logi” – to motto wysmarowałam czerwonym markerem na okładce podręcznika na moim pierwszym szkoleniu z administrowania serwerami aplikacji. Tam też raz za razem przekonywałam się, że logi często podają rozwiązania problemów niemalże na tacy.
W cyklu o logach w serwerach aplikacji z rodziny EuroAP (zatem także JBoss®) pokażemy, gdzie szukać logów, jak je przeglądać oraz jakie mechanizmy nimi sterują, a także jak je konfigurować.
Gdzie te logi?
Tryb Standalone
Zaraz po uruchomieniu serwera aplikacji w trybie Standalone pojawia się folder EUROAP_HOME/standalone/log
, którego zawartość prezentuje się następująco:
audit.log gc.log.0.current server.log
server.log
– zwany logiem serwera. Tutaj znajdziemy wiadomości, które wysłał serwer aplikacji, w tym także te z momentu uruchomienia. Domyślnie zapisywane są tu te same wiadomości, które wyświetlane są na konsoli/terminalu, w którym uruchomiliśmy serwer aplikacji EuroAPgc.log.0.current
– tutaj logowane są informacje o garbage collection (tłumacząc na język polski „odśmiecanie”) wirtualnej maszyny Javy, na której uruchomiony jest dany serwer. Nazwa tego loga ma format: gc.log.NUMER.current. Domyślnie jest ograniczony do 3 megabajtów i jest rotowany do pięciu elementów. Możemy wyłączyć tworzenie tego loga za pomocą zmiennej środowiskowejGC_LOG
. Jest to jednak wysoce niewskazane. Narzut na jego tworzenie jest minimalny, a korzyści płynące z jego analizy bywają nieocenioneaudit.log
– tutaj znajdziemy pliki dotyczące audytu – zmian, jakie zostały dokonane na serwerze aplikacji. Domyślnie te logi są wyłączone.
Tryb Domain
W trybie Domain logi są w folderze EUROAP_HOME/domain/log
oraz w EUROAP_HOME/domain/servers/NAZWA_SERWERA/log/'
.
Foldery te zawierają następujące logi:
EUROAP_HOME/domain/log/host-controller.log
– logi dotyczące startu kontrolera hostu
EUROAP_HOME/domain/log/process-controller.log
– logi dotyczące startu kontrolera procesu
EUROAP_HOME/domain/servers/NAZWA_SERWERA/log/server.log
– logi dotyczące danego serwera, w tym jego uruchamiania i zamykania.
Przeglądanie logów
Standardowo, jak prawie wszystko w EuroAP, logi możemy przeglądać na trzy sposoby:
- przez graficzną konsolę administratora
- przez CLI
- bezpośrednio w plikach.
Konsolę administratora i CLI chronią standardowe mechanizmy serwera aplikacji. Zatem użytkownik zalogowany na te narzędzia będzie mógł zobaczyć tylko te logi, do których ma uprawnienia. Aby log był widoczny w tych narzędziach, musi znajdować się w folderze wyspecyfikowanym przez właściwość jboss.server.log.dir
.
Przeglądanie logów w graficznej konsoli administratora
Logi w konsoli graficznej są dostępne w zakładce Runtime. Wybieramy odpowiedni serwer, w nim Log Files i interesujący nas log.
Konsola pokazuje wyłącznie 2000 ostatnich linii, aby uniknąć możliwości otworzenia tak dużego pliku, który zatrzymałby działanie przeglądarki.
Przeglądanie logów w CLI
Logi w CLI możemy przeglądać za pomocą polecenia /subsystem=logging/log-file=NAZWA_PLIKU_Z_LOGIAMI:read-log-file
. Udostępnia ono kilka wartościowych przełączników:
lines
– ilość wyświetlanych linii. Domyślna wartość to10
. Wartość-1
pozwala wyświetlić cały plikskip
– ilość linii, które należy pominąć przed czytaniem logu. Domyślnie jest ona równa0
tail
– przełącznik pozwalający czytać plik logu od tyłu (czyli nowsze wiadomości będą wyświetlane jako pierwsze). Domyślnie jest ustawiony natrue
encoding
– pozwala ustawić kodowanie znaków, które ma być zastosowane przy odczycie logu.
Polecenie wyświetlające 2 najnowsze (ostatnie) linie server.log wygląda następująco:
[standalone@localhost:9990 /] /subsystem=logging/log-file=server.log:read-log-file(lines=2)
{
"outcome" => "success",
"result" => [
"2021-01-20 00:37:23,007 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Ht
tp management interface listening on http://127.0.0.1:9990/management",
"2021-01-20 00:37:23,007 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Ad
min console listening on http://127.0.0.1:9990"
]
}
Przeglądanie logów w plikach
Można tak po prostu zajrzeć w pliki na serwerze aplikacji. Ograniczają nas wówczas tylko nasze umiejętności posługiwania się narzędziami typu grep i less. Pliki ukazują nam cały kontekst, w jakim została zapisana dana wiadomość – widzimy, co działo się przed wiadomością, a co po niej. Łatwo zobaczyć, ile razy podobna wiadomość pojawiała się już wcześniej.
Mankamentem tego rozwiązania jest to, że musimy mieć dostęp do danych plików.
Mechanizmy logowania
Za logowanie w serwerach aplikacji z rodziny EuroAP odpowiadają 3 główne mechanizmy. Najważniejszy z nich to podsystem logowania (ang. logging subsystem), którego główną składową jest Log Manager. Zanim jednak podsystemy zostaną uruchomione, może się jeszcze wiele wydarzyć. Dlatego mamy drugi mechanizm – logowanie podczas uruchamiania (ang. bootup logging). Trzeci mechanizm – profile logowania (ang. logging profiles) – służy do zarządzania logami aplikacji wdrożonych na nasz serwer aplikacji niezależnie od innych mechanizmów i konfiguracji.
Logowanie podczas uruchamiania
Mechanizm logowania podczas uruchamiania działa od momentu startu serwera aplikacji do momentu, aż podsystem logowania będzie w stanie przejąć jego obowiązki. Mechanizm ten loguje informacje o środowisku uruchomieniowym i o włączaniu każdego serwisu w ramach serwera aplikacji.
Do informacji środowiskowych, które możemy odczytać z tego logu, należą między innymi:
- informacje o wewnętrznych właściwościach serwera aplikacji z rodziny EuroAP. Na przykład
jboss.server.base.dir
albo kluczowe dla logowaniajboss.server.log.dir
- informacje o Javie – jej wersja, wartość zmiennej JAVA_HOME
- informacje o tym, skąd pobierana jest konfiguracja tego mechanizmu logowania
- informacje o użytkowniku, który uruchomił serwer aplikacji.
Konfigurację logowania podczas uruchomienia możemy podejrzeć w {standalone,domain}/configuration/logging.properties
. Nie należy jednak tego pliku zmieniać, ponieważ i tak zostanie on nadpisany podczas kolejnego uruchomienia serwera. Nie ma możliwości konfiguracji tego mechanizmu.
Logowanie podczas uruchomienia loguje na konsolę i do pliku server.log
. Warto zauważyć, że zgodnie z konfiguracją z logging.properties
na konsolę dostajemy tylko logi o poziomie co najmniej INFO, a w pliku zapisywane są wszystkie poziomy logów.
Podsumowanie
Pokazaliśmy dziś, gdzie szukać logów, co można znaleźć w logach skonfigurowanych domyślnie, a także jak przeglądać logi za pomocą graficznej konsoli administratora i CLI. Zaprezentowaliśmy również mechanizmy odpowiadające za logowanie w serwerach aplikacji z rodziny EuroAP. Omówiliśmy najprostszy z nich – logowanie podczas uruchamiania serwera aplikacji. W kolejnych artykułach zanurzymy się w konfigurację podsystemu do logowania i profili logowania.