CodeGym /Kursy /Docker SELF /Logowanie i przeglądanie dzienników systemowych: poleceni...

Logowanie i przeglądanie dzienników systemowych: polecenia `journalctl`

Docker SELF
Poziom 3 , Lekcja 1
Dostępny

Logowanie i przeglądanie dzienników systemowych: polecenia journalctl

1. Dlaczego warto pracować z logami?

Dzienniki (lub logi) to twój osobisty "detektyw", który zapisuje każdą ważną operację w systemie. Rejestrują działania jądra, aplikacji, serwisów i innych komponentów systemu. Logi są kluczowym narzędziem w diagnostyce problemów i monitorowaniu pracy systemu.

Wyobraź sobie, że twój serwer nagle przestał odpowiadać. Zamiast zgadywać, jak Sherlock Holmes, co poszło nie tak, możesz po prostu zajrzeć do dzienników — tam wszystko jest jak na dłoni. Na przykład: "Usługa ssh padła", "Dysk się przepełnił", "Kot przebiegł po klawiaturze i zatrzymał ważną usługę". Logi wszystko opowiedzą.

Praca z dziennikami systemowymi pomaga:

  1. Diagnozować problemy. Jeśli coś idzie nie tak, w logach można znaleźć błąd lub ostrzeżenie.
  2. Śledzić pracę serwisów. Na przykład dowiedzieć się, dlaczego baza danych PostgreSQL została zatrzymana lub kiedy ostatni raz zaktualizował się serwer www.
  3. Zbierać analitykę. Monitorowanie wydajności i metryk serwisów.
  4. Zwiększać bezpieczeństwo. Logi mogą pokazać próby włamania przez SSH lub nieautoryzowany dostęp.

2. Wprowadzenie do journalctl

journalctl — to potężna komenda do przeglądania i filtrowania dzienników systemowych w Linuxie. Działa z systemd-journald — systemem zbierania i przechowywania logów zarządzanym przez systemd.

Podstawowe operacje z journalctl

Na początek zobaczmy, jak używać tego narzędzia. Otwórz terminal i wpisz:

journalctl

Ta komenda pokaże Ci wszystkie dzienniki systemowe posortowane w porządku chronologicznym. Jeśli spodziewasz się czegoś małego, przygotuj się: zwykle logi zajmują kilka ekranów. Nie przejmuj się, nauczymy się je filtrować trochę później.

Teraz, aby wyjść z przeglądania logów, wciśnij q (wcześniej już zauważyłeś podobieństwo między less a journalctl?).


Filtrowanie logów według czasu

Teraz magicznie ograniczymy dzienniki do wygodniejszego zakresu.

Przeglądanie logów z ostatniej godziny

journalctl --since "1 hour ago"

Przeglądanie logów z konkretnego dnia

journalctl --since "2023-10-31"

Określenie zakresu czasowego

Chcesz zobaczyć zdarzenia od 8 rano do 9 rano? Żaden problem:

journalctl --since "2023-10-31 08:00:00" --until "2023-10-31 09:00:00"

Filtrowanie według czasu jest przydatne, na przykład, gdy wiesz, że problem zaczął się w określonym momencie. Analogia: nie czytasz całej książki, aby dowiedzieć się, kto jest mordercą — po prostu sprawdzasz ostatnie strony.


Praca z logami konkretnego serwisu

Zamiast analizować cały system, możesz skupić się na jednym serwisie. Na przykład, chcesz zobaczyć, jak działa serwer WWW nginx:

journalctl -u nginx

Jeśli chcesz widzieć wpisy tylko z ostatniej godziny (a wszyscy lubimy świeże informacje):

journalctl -u nginx --since "1 hour ago"

Szybka lista przykładów:

  • -u ssh: Logi dla serwisu SSH.
  • -u cron: Logi zadań CRON.
  • -u mysql: Logi bazy danych MySQL.

Czytanie logów w czasie rzeczywistym

Kiedy naprawiasz coś na bieżąco, może być przydatne obserwowanie logów w czasie rzeczywistym — jak oglądanie meczu piłki nożnej. W tym celu użyj komendy:

journalctl -f

Opcja -f działa podobnie do tail -f, pokazując nowe wpisy w logach w miarę ich pojawiania się.

Na przykład, spróbuj uruchomić tę komendę i równolegle zrestartować jakiś serwis:

sudo systemctl restart ssh

Zobaczysz zmiany — wpis o restarcie pojawi się w logach.


Wyszukiwanie błędów w logach

Często logi są długie, a szukanie w nich interesujących informacji ręcznie to jak szukanie igły w stogu siana. Dlatego możesz użyć wyszukiwania po słowach kluczowych.

Proste użycie:

journalctl | grep "ERROR"

Ten przykład pokaże tylko te linie, które zawierają słowo ERROR. Możesz zastąpić ERROR czymkolwiek, np. WARNING, failed lub panic.


3. Specjalne opcje dla journalctl

Przeglądanie wpisów tylko po restarcie

Chcesz dowiedzieć się, co działo się po ostatnim uruchomieniu systemu? Tajemnicze, co? Po prostu wykonaj:

journalctl -b

Każdy restart systemu jest rejestrowany jako oddzielny "blok". Jeśli chcesz zobaczyć wpisy po przedostatnim uruchomieniu systemu (tak, to może być przydatne):

journalctl -b -1

Filtrowanie według użytkownika lub PID

Czasem trzeba śledzić działania konkretnego użytkownika lub procesu. Na przykład:

journalctl _UID=1000

Zamień 1000 na ID użytkownika (ID można sprawdzić za pomocą komendy id).

Dla filtrowania według PID (identyfikatora procesu):

journalctl _PID=1234

4. Przykłady praktyczne

  1. Szukanie błędów usługi SSH.

    Chcesz dowiedzieć się, dlaczego SSH odmawia połączenia. Użyj:

    journalctl -u ssh | grep "ERROR"
    
  2. Analiza logów z ostatnich 24 godzin dla CRON.

    Załóżmy, że sprawdzasz, dlaczego twój codzienny skrypt się nie wykonał:

    journalctl -u cron --since "yesterday"
    
  3. Monitorowanie serwera WWW w czasie rzeczywistym.

    Serwer WWW pod obciążeniem? Sprawdź logi w poszukiwaniu błędów:

    journalctl -u nginx -f
    

Ćwiczenie do samodzielnej praktyki

  1. Znajdź logi błędów dla usługi SSH z ostatnich 24 godzin.
  2. Używając journalctl, wyświetl logi dla CRON tylko z poranka. Upewnij się, że komenda działa w prawidłowym przedziale czasowym.
  3. Zorganizuj monitorowanie logów systemd w czasie rzeczywistym i uruchom kilka usług systemowych, aby zobaczyć ich status w logach.

Logowanie to nie tylko sprawdzanie błędów czy diagnoza problemów. To twój tajny agent, który pomaga śledzić całą operacyjną działalność systemu. Jak tylko opanujesz komendę journalctl, będziesz miał potężne narzędzie do analizy, optymalizacji i zapewnienia stabilnej pracy systemów Linux w każdych warunkach.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION