Zarządzaj komunikatami dziennika w systemie za pomocą Journalctl [Comprehensive Guide]

Zarządzaj komunikatami dziennika w systemie za pomocą Journalctl [Comprehensive Guide]

Systemd jest najnowocześniejszym menedżerem systemu i serwisu dla systemów Linux: zamiennik demona init, który ma równolegle uruchomić procesy w systemie. Obecnie jest obsługiwany w wielu obecnych dystrybucjach głównego nurtu, w tym Fedora, Debian, Ubuntu, OpenSuse, Arch, Rhel, Centos itp.

Wcześniej wyjaśniliśmy historię „init” i „systemd”; gdzie rozmawialiśmy o tym, jakie są dwa demony, dlaczegow tym„Technicznie wymagane do zastąpienia”Systemd'a także główne cechy systemu.

Jedną z głównych zalet SystemD w porównaniu z innymi wspólnymi systemami initins jest wsparcie dla scentralizowanego zarządzania systemem i procesów rejestrowania za pomocą czasopisma. W tym artykule dowiemy się, jak zarządzać i przeglądać komunikaty dziennika w systemie SystemD za pomocą Journalctl polecenie w Linux.

Ważny: Przed przejściem w tym przewodniku możesz nauczyć się zarządzać usługami i jednostkami „SystemD” za pomocą polecenia „SystemCtl”, a także tworzyć i uruchomić nowe jednostki serwisowe w Systemd za pomocą skontleniach w Linux. Jeśli jednak nie przeszkadza ci wszystkie powyższe, kontynuuj czytanie.

Konfigurowanie Journalda do zbierania komunikatów dziennika w systemie SystemD

Journald to demon, który gromadzi i pisze wpisy do dziennika z całego systemu; Są to zasadniczo uruchamiane wiadomości, wiadomości z jądra i Syslog lub różnych aplikacji i przechowuje wszystkie wiadomości w centralnej lokalizacji - plik Journal.

Możesz kontrolować zachowanie Journald za pomocą domyślnego pliku konfiguracyjnego: /itp./Systemd/Journald.conf który jest generowany w czasie kompilacji. Ten plik zawiera opcje, których wartości możesz zmienić, aby zapewnić wymagania dotyczące lokalnego środowiska.

Poniżej znajduje się próbka tego, jak wygląda plik, przeglądany za pomocą polecenia CAT.

$ cat/etc/systemd/jountald.conf 
Plik konfiguracyjny Journalda
# Zobacz Journald.Conf (5) Aby uzyskać szczegółowe informacje. [Journal] #Storage = Auto #Compress = Tak #Seal = Tak #splitMode = uid #synCinterValsec = 5M #ratelimitInterval = 30S #RateliMitburst = 1000 #SystemMaxuse = #SystemKeepFree = #SystemMaxFileSize = #SystemMaxFiles = 100 #RuntimEMaxuse = #RuntimeePFree = #RuntimeMaxfileSize = #runtimEMaxFiles = 100 #maxEntentionSec = #maxfileSec = 1Month #do przodu MaxlevelConsole = Info #Maxlevelwall = Emerg 

Należy pamiętać, że różne pakiety instaluje i używają wyodrębniania konfiguracji /usr/lib/systemd/*.conf.D/ i konfiguracje czasu wykonywania można znaleźć w /run/systemd/jountald.conf.D/*.conf którego niekoniecznie możesz użyć.

Włącz przechowywanie danych dziennika na dysku

Wiele dystrybucji Linux, w tym Ubuntu i jego pochodne, takie jak Linux Mint, domyślnie nie umożliwiają trwałego przechowywania komunikatów rozruchowych na dysku.

Możliwe jest to, aby to włączyć, ustawiając „Składowanie„Opcja„ ”uporczywy" jak pokazano niżej. To stworzy /var/log/dziennik katalog i wszystkie pliki czasopisma będą przechowywane pod nim.

$ sudo vi/etc/systemd/jountald.conf lub $ sudo nano/etc/Systemd/Journald.conf 
[Journal] Storage = trwałe 

W przypadku dodatkowych ustawień znajdź znaczenie wszystkich opcji, które mają być skonfigurowane w ramach "[Dziennik]" sekcja przez pisanie.

$ Man Journald.conf 

Ustawienie prawidłowego czasu systemu za pomocą polecenia timedatectl

W przypadku wiarygodnego zarządzania dziennikiem w systemie za pomocą usługi Journald upewnij się, że ustawienia czasu, w tym strefa czasowa, są prawidłowe w systemie.

Aby wyświetlić bieżące ustawienia daty i godziny w systemie, wpisz.

$ timedatectl lub $ timedatectl Status czas lokalny: czw 2017-06-15 13:29:09 Eat Universal Time: czw 2017-06-15 10:29:09 UTC RTC Czas: czw 2017-06-15 10:29:09 Strefa czasowa: Afryka/Kampala (Eat, +0300) Czas sieciowy: Tak NTP Synchronizowany: Tak RTC w lokalnym TZ: Nie 

Aby ustawić prawidłową strefę czasową i ewentualnie czas systemu, użyj poniższych poleceń.

$ sudo timedatectl set-timeZone Africa/Kampala $ sudo timedatectl Time „13:50:00” 

Przeglądanie komunikatów dziennika za pomocą polecenia Journalctl

Journalctl jest narzędziem używanym do przeglądania zawartości czasopisma SystemD (napisanego przez Journald Service).

Aby pokazać wszystkie zebrane dzienniki bez filtrowania, wpisz.

$ Journalctl 
Wyświetl komunikaty dziennika
-- Dzienniki zaczynają się na śr. 2017-06-14 21:56:43 Eat, End At CH 2017-06-15 12:28:19 Jedz 14 czerwca 21:56:43 Tecmint Systemd-Journald [336]: Runtime Journal (/Runt /log/Journal 14 czerwca 21:56:43 Kernel TecMint: Inicjowanie subskrypcji cgroup cpuset 14 czerwca 21:56:43 Tecminint jądro: inicjalizacja cgroup subsys CPU 14 21:56:43 TecMint jądro: inicjaliza 56:43 Kernel Tecmint: Linux wersja 4.4.0-21-Generic ([chroniony e-mail]) 14 czerwca 21:56:43 Kernel Tecmint: Linia poleceń: boot_image =/boot/vmlinuz-4.4.0-21- 14 czerwca 21:56:43 Kernel TecMint: Kernel obsługiwany CPU: 14 czerwca 21:56:43 Tecmint Kernel: Intel Trineintel 14 21:56:43 Kernel TecMint: AMD Authenticamd 14 czerwca 21:56:43 TecMint Kernel: Centaur Centaurhauls 14 21:56:43 Kernel Tecmint: x86/FPU: XState_offset [2]: 576, XState_Sizes [2] czerwca 21:56:43 Tecmint JURLEL: X86/FPU: Potwierdzanie XSave Feature 0x01: 'x87 Flo 14 czerwca 21:56:43 Kernel Tecmint: x86/FPU: Obsługa XSAVE Funkcja 0x02: „SSE Reg 14 21:56:43 Tecmint Kernel: x86/FPU: Obsługa XSAVE Funkcja 0x04:„ AVX Reg 14 21:56 : 43 jądro Tecmint: x86/fpu: Włączone funkcje xstate 0x7, kontekst SI 14 czerwca 21:56:43 Tecmint jądro: x86/fpu: Używanie przełączników kontekstowych FPU „chętnych” FPU. 14 czerwca 21:56:43 Kernel TECMINT: E820: Dostarczona przez bios fizyczna mapa pamięci RAM: 14 czerwca 21:56:43 Tecmint Jądro: BIOS-E820: [MEM 0X0000000000000000-0X00000000000 JUNN 14 21:56:43 TecMint Kernel: Bios-- E820: [Mem 0x0000000000090000-0x000000000 czerwca 14 21:56:43 jądro TecMint: BIOS-E820: [MEM 0X0000000000100000-0X00000000001FF JUN 14 21:56:43 TecMint jądra: BIOS-E820: [MEM 0X0000000020000000-0x00000000001 : 43 jądro Tecmint: BIOS-E820: [MEM 0x0000000020200000-0x00000000400 

Wyświetl komunikaty dziennika na podstawie butów

Możesz wyświetlić listę numerów rozruchowych (w stosunku do bieżącego rozruchu), ich identyfikatorów i znaczników czasu pierwszego i ostatniego wiadomości odpowiadające --List-Boots opcja.

$ Journalctl--liter-boots -1 9FB590B48E1242F58C2579DEFDBDDC9 THU 2017-06-15 16:43:36 15 1 

Aby wyświetlić wpisy dziennika z bieżącego rozruchu (numer 0), użyj -B przełącz w ten sposób (to samo co wyjście próbki powyżej).

$ Journalctl -B 

i aby zobaczyć dziennik z poprzedniego rozruchu, użyj -1 Względny wskaźnik z -B opcja jak poniżej.

$ Journalctl -B -1 

Alternatywnie, użyj takiego identyfikatora rozruchu.

$ Journalctl -B 9FB590B48E1242F58C2579DEFDBBDDC9 

Filtrowanie komunikatów dziennika na podstawie czasu

Aby użyć czasu w skoordynowanym formacie uniwersalnym (UTC), dodaj --UTC opcje w następujący sposób.

$ Journalctl --utc 

Aby zobaczyć wszystkie wpisy od określonej daty i godziny, e.G. 15 czerwca 2017 o 8:15, wpisz to polecenie.

$ Journalctl--Since "2017-06-15 08:15:00" $ Journalctl--Since Today $ Journalctl-Since wczoraj 

Przeglądanie najnowszych wiadomości dziennika

Aby wyświetlić najnowsze komunikaty dziennika (domyślnie), użyj -N flaga, jak pokazano poniżej.

$ Journalctl -n $ Journalctl -n 20 

Przeglądanie komunikatów dziennika generowanych przez jądro

Aby zobaczyć tylko komunikaty jądra, podobne do wyjścia polecenia DMESG, możesz użyć -k flaga.

$ Journalctl -k $ Journalctl -k $ Journalctl -k -b 9FB590B48E1242F58C2579DEFDBDDC9 

Przeglądanie komunikatów dziennika generowanych przez jednostki

Aby wyświetlić wszystkie wpisy do dziennika dla określonego urządzenia, użyj -u przełącz następująco.

$ Journalctl -u Apache2.praca 

Zero do bieżącego rozruchu, wpisz to polecenie.

$ Journalctl -b -u Apache2.praca 

Aby pokazać dzienniki z poprzedniego rozruchu, użyj tego.

$ Journalctl -b -1 -u Apache2.praca 

Poniżej znajdują się inne przydatne polecenia:

$ Journalctl -u Apache2.serwis $ Journalctl -u Apache2.SERVICE -KOME DZISIAJ $ Journalctl -u Apache2.Service -u Nagios.Służba -wczoraj 

Przeglądanie komunikatów dziennika generowanych przez procesy

Aby wyświetlić dzienniki generowane przez określony proces, określ jego PID w ten sposób.

$ JournalCtl _PID = 19487 $ Journalctl _PID = 19487 - -Since Today $ JournalCtl _PID = 19487 -Since Wczoraj 

Przeglądanie komunikatów dziennika generowanych przez identyfikator użytkownika lub grupy

Aby wyświetlić dzienniki generowane przez określonego użytkownika lub grupę, określ jego identyfikator użytkownika lub grupy.

$ JournalCtl _uid = 1000 $ Journalctl _uid = 1000 - -Since dzisiaj $ Journalctl _uid = 1000 -b -1 -Since dzisiaj 

Przeglądanie dzienników generowanych przez plik

Aby pokazać wszystkie dzienniki generowane przez plik (być może wykonywalny), takie jak wykonywacze wykonywacze D-Bus lub BASH, po prostu wpisz.

$ Journalctl/usr/bin/dbus-daemon $ journactl/usr/bin/bash 

Przeglądanie komunikatów dziennika według priorytetu

Możesz także filtrować wyjście na podstawie priorytetów wiadomości lub zakresów priorytetów za pomocą -P flaga. Możliwe wartości to: 0 - Emect, 1 - Alert, 2 - Crit, 3 - Err, 4 - Ostrzeżenie, 5 - zawiadomienie, 6 - Info, 7 - Debug):

$ Journalctl -p err 

Aby określić zakres, użyj poniższego formatu (ECHICT do ostrzeżenia).

$ Journalctl -p 1… 4 lub $ Journalctl -p Emerg… ostrzeżenie 

Wyświetl wiadomości dziennika w czasie rzeczywistym

Możesz praktycznie oglądać dzienniki, ponieważ są one pisane z -F opcja (podobna do ogon -f funkcjonalność).

$ Journalctl -f 

Obsługa formatowania wyświetlania dziennika

Jeśli chcesz kontrolować formatowanie wyjściowe wpisów do dziennika, dodaj -o Flag i użyj tych opcji: CAT, Eksport, JSON, JSON-PETTY, JSON-SSE, KRÓTKI, KRÓTKI, KRÓTKICH, KRÓTKICH MONOTONICZNYCH, KRÓTKOWYCH I ROZDZIAŁ (Sprawdź znaczenie opcji na stronie Man:

kot Opcja pokazuje rzeczywisty komunikat każdego wpisu do czasopisma bez metadanych (znacznik czasu i tak dalej).

$ Journalctl -b -u Apache2.Service -o Cat 

Zarządzanie czasopismami w systemie

Aby sprawdzić plik dziennika pod kątem spójności wewnętrznej, użyj --zweryfikować opcja. Jeśli wszystko jest w porządku, wyjście powinno wskazać przepustkę.

$ Journalctl --Verify Pass:/run/log/journal/2A5D5F96EF9147C0B35535562B32D0FF/SYSTEM.Journal 491f68: Nieużywane dane (entent_offset == 0) pass:/run/log/journal/2A5D5F96EF9147C0B35535562B32D0FF/[chroniony e -mail] 9866C3D4D.Journal Pass:/run/log/journal/2A5D5F96EF9147C0B35535562B32D0FF/[chroniony e -mail] 5d8945a9e.Journal Pass:/run/log/journal/2A5D5F96EF9147C0B35535562B32D0FF/[chroniony e -mail] 1BECAB02F.Journal Pass:/run/log/journal/2A5D5F96EF9147C0B35535562B32D0FF/[e -mail chroniony] 01cfcedff.dziennik 

Usuwanie starych plików czasopism

Możesz także wyświetlić bieżące użycie dysku wszystkich plików czasopisma za pomocą --użycie dysku opcje. Pokazuje sumę użycia dysku wszystkich zarchiwizowanych i aktywnych plików czasopisma:

$ JournalCtl-Disk-użytkowanie 

Aby usunąć stare (zarchiwizowane) pliki czasopisma Uruchom poniższe polecenia:

$ sudo Journalctl --vacuum-size = 50m #delete Pliki do czasu, w którym używają przestrzeń dysku, spadnie poniżej określonego rozmiaru $ sudo journactl-Vacuum Time = 1years #Delete Pliki, aby wszystkie pliki czasopisma nie zawierały danych starszych niż określone czasowe TimePan $ sudo Journalctl-Vacuum-Files = 4 #delete Pliki, aby nie więcej niż określona liczba osobnych plików czasopisma pozostała w miejscu przechowywania 

Obrotowe pliki czasopisma

Wreszcie możesz poinstruować Journalda, aby obracał pliki czasopisma za pomocą --obracać się opcja. Zauważ, że ta dyrektywa nie powraca do momentu zakończenia operacji obrotu:

$ sudo journactl -rotate 

Aby uzyskać szczegółowy przewodnik i opcje, wyświetl stronę JournalCtl Man w następujący sposób.

$ MAN Journalctl 

Sprawdź kilka przydatnych artykułów.

  1. Zarządzanie procesem i usługami uruchamiania systemu (Sysvinit, SystemD i Upstart)
  2. Petiti - narzędzie analizy dziennika typu open source dla systemu Linux Sysadmins
  3. Jak konfigurować i zarządzać rotacją dziennika za pomocą logrotan w Linux
  4. LNAV - Obserwuj i analizuj dzienniki Apache z terminalu Linux

To wszystko na razie. Użyj informacji zwrotnej od dołu, aby zadać wszelkie pytania lub dodać przemyślenia na ten temat.