Administrator systemu Linux - zarządzanie dziennikami

systemd zmienił sposób zarządzania rejestrowaniem systemu w CentOS Linux. Zamiast każdego demona w systemie umieszczać logi w poszczególnych lokalizacjach, zamiast używać narzędzi takich jak tail lub grep jako podstawowego sposobu sortowania i filtrowania wpisów dziennika,journald udostępnił pojedynczy punkt administracyjny do analizy dzienników systemowych.

Główne komponenty logowania systemd to: journal, jounralctl i journald.conf

journald jest głównym demonem rejestrującym i jest konfigurowany przez edycję journald.conf, podczas gdy dziennik journalctl jest używany do analizowania zdarzeń zarejestrowanych przez dziennik .

Zdarzenia rejestrowane przez dziennik obejmują: zdarzenia jądra, procesy użytkownika i usługi demonów.

Ustaw odpowiednią strefę czasową systemu

Przed użyciem journalctl musimy się upewnić, że nasz czas systemowy jest ustawiony na prawidłowy czas. Aby to zrobić, chcemy użyć timedatectl .

Sprawdźmy aktualny czas systemowy.

[root@centos rdc]# timedatectl status 
Local time: Mon 2017-03-20 00:14:49 MDT 
Universal time: Mon 2017-03-20 06:14:49 UTC 
RTC time: Mon 2017-03-20 06:14:49 
Time zone: America/Denver (MDT, -0600) 
NTP enabled: yes 
NTP synchronized: yes 
RTC in local TZ: no 
DST active: yes 
Last DST change: DST began at 
              Sun 2017-03-12 01:59:59 MST 
              Sun 2017-03-12 03:00:00 MDT 
Next DST change: DST ends (the clock jumps one hour backwards) at 
              Sun 2017-11-05 01:59:59 MDT 
              Sun 2017-11-05 01:00:00 MST
              
[root@centos rdc]#

Obecnie system działa poprawnie z lokalną strefą czasową. Jeśli twój system nie jest, ustawmy odpowiednią strefę czasową. Po zmianie ustawień CentOS automatycznie obliczy przesunięcie strefy czasowej od bieżącej strefy czasowej, dostosowując od razu zegar systemowy.

Wymieńmy wszystkie strefy czasowe z timedatectl -

[root@centos rdc]# timedatectl list-timezones 
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau

To jest sporny wynik z timedatectl list-timezones . Aby znaleźć określoną lokalną strefę czasową, można użyć polecenia grep -

[root@centos rdc]# timedatectl list-timezones | grep -i "america/New_York" 
America/New_York
[root@centos rdc]#

Etykieta używana przez CentOS to zwykle Kraj / Region z podkreśleniem zamiast spacji (Nowy_Jork versus „Nowy Jork”).

Teraz ustawmy naszą strefę czasową -

[root@centos rdc]# timedatectl set-timezone "America/New_York"

[root@centos rdc]# date 
Mon Mar 20 02:28:44 EDT 2017

[root@centos rdc]#

Twój zegar systemowy powinien automatycznie dostosować czas.

Użyj journalctl do analizy dzienników

Typowe przełączniki wiersza poleceń podczas korzystania z journalctl -

Przełącznik Akcja
-k Wyświetla tylko komunikaty jądra
-u Listy według określonej jednostki (httpd, sshd itp.)
-b Uruchamia odsunięcie etykiety
-o Rejestruje format wyjściowy
-p Filtruje według typu dziennika (nazwa lub numer)
-FA Nazwa pola lub wartość_pola
--utc Czas w UTC
--od Filtruj według przedziału czasowego

Sprawdź dzienniki rozruchowe

Najpierw zbadamy i skonfigurujemy dzienniki rozruchowe w CentOS Linux. Pierwszą rzeczą, którą zauważysz, jest to, że CentOS domyślnie nie przechowuje rejestrowania rozruchu, który jest trwały podczas ponownego uruchamiania.

Aby sprawdzić dzienniki rozruchowe dla każdej instancji ponownego uruchomienia, możemy wydać następujące polecenie -

[root@centos rdc]# journalctl --list-boots 
-4 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-3 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-2 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-1 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
 0 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:07:36 MDT

[root@centos rdc]#

Po ponownym uruchomieniu systemu możemy zobaczyć kolejny wpis.

[root@centos rdc]# journalctl --list-boots 
-5 bca6380a31a2463aa60ba551698455b5 Sun 2017-03-19 22:01:57 MDT—Sun 2017-03-19 22:11:02 MDT
-4 3aaa9b84f9504fa1a68db5b49c0c7208 Sun 2017-03-19 22:11:09 MDT—Sun 2017-03-19 22:15:03 MDT
-3 f80b231272bf48ffb1d2ce9f758c5a5f Sun 2017-03-19 22:15:11 MDT—Sun 2017-03-19 22:54:06 MDT
-2 a071c1eed09d4582a870c13be5984ed6 Sun 2017-03-19 22:54:26 MDT—Mon 2017-03-20 00:48:29 MDT
-1 9b4e6cdb43b14a328b1fa6448bb72a56 Mon 2017-03-20 00:48:38 MDT—Mon 2017-03-20 01:09:57 MDT
 0 aa6aaf0f0f0d4fcf924e17849593d972 Mon 2017-03-20 01:10:07 MDT—Mon 2017-03-20 01:12:44 MDT
 
[root@centos rdc]#

Przyjrzyjmy się teraz ostatniej instancji rejestrowania rozruchu -

root@centos rdc]# journalctl -b -5 
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Mon 2017-03-20 01:20:27 MDT. --
Mar 19 22:01:57 localhost.localdomain systemd-journal[97]: Runtime journal is using 8.0M 
(max allowed 108.4M
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuset
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpu
Mar 19 22:01:57 localhost.localdomain kernel: Initializing cgroup subsys cpuacct
Mar 19 22:01:57 localhost.localdomain kernel: Linux version 3.10.0514.6.2.el7.x86_64 
([email protected].
Mar 19 22:01:57 localhost.localdomain kernel: Command line: 
BOOT_IMAGE=/vmlinuz-3.10.0-514.6.2.el7.x86_64 ro
Mar 19 22:01:57 localhost.localdomain kernel: Disabled fast string operations
Mar 19 22:01:57 localhost.localdomain kernel: e820: BIOS-provided physical RAM map:

Powyżej znajduje się skondensowany wynik z naszego ostatniego buta. Moglibyśmy również odwołać się do dziennika rozruchu z godzin, dni, tygodni, miesięcy, a nawet lat. Jednak domyślnie CentOS nie przechowuje trwałych dzienników rozruchu. Aby umożliwić trwałe przechowywanie dzienników rozruchowych, musimy wprowadzić kilka zmian w konfiguracji -

  • Utwórz centralne punkty przechowywania dzienników rozruchowych
  • Nadaj odpowiednie uprawnienia do nowego folderu dziennika
  • Skonfiguruj journald.conf do trwałego rejestrowania

Skonfiguruj lokalizację rozruchową dla trwałych dzienników rozruchowych

Początkowym miejscem, w którym dziennik będzie chciał przechowywać trwałe dzienniki rozruchu, jest / var / log / journal . Ponieważ to nie istnieje domyślnie, stwórzmy to -

[root@centos rdc]# mkdir /var/log/journal

Teraz dajmy katalogowi odpowiednie uprawnienia dostęp do demona Journald -

systemd-tmpfiles --create --prefix /var/log/journal

Na koniec powiedzmy dziennikowi, że powinien przechowywać trwałe dzienniki rozruchu. W vimie lub twoim ulubionym edytorze tekstu otwórz /etc/systemd/jounrald.conf " .

# See journald.conf(5) for details.  
[Journal]=Storage=peristent

Linia, którą się zajmujemy, to Storage = . Najpierw usuń komentarz # , a następnie zmień naStorage = persistentjak pokazano powyżej. Zapisz i zrestartuj swój system CentOS i uważaj, aby podczas uruchamiania dziennikctl list-boot było wiele wpisów .

Note- Ciągle zmieniający się identyfikator maszyny, taki jak ten od dostawcy VPS, może spowodować, że dziennik nie będzie mógł przechowywać trwałych dzienników rozruchowych. Istnieje wiele obejść tego scenariusza. Najlepiej jest zapoznać się z aktualnymi poprawkami opublikowanymi na forach administratorów CentOS, niż postępować zgodnie z zaufanymi radami tych, którzy znaleźli prawdopodobne obejścia VPS.

Aby zbadać konkretny dziennik rozruchowy, musimy po prostu uzyskać każdy offset za pomocą journald --list-uruchamia offset z przełącznikiem -b . Aby sprawdzić drugi dziennik rozruchu, którego użyjemy -

journalctl -b -2

Domyślną opcją -b bez określonego przesunięcia dziennika rozruchowego będzie zawsze bieżący dziennik rozruchu po ostatnim ponownym uruchomieniu.

Analizuj dzienniki według typu dziennika

Wydarzenia z dziennika są ponumerowane i podzielone na 7 oddzielnych typów -

0 - emerg   :: System is unusable 
1 - alert   :: Action must be taken immediatly    
2 - crit    :: Action is advised to be taken immediatly 
3 - err     :: Error effecting functionality of application 
4 - warning :: Usually means a common issue that can affect security or usilbity 
5 - info    :: logged informtation for common operations 
6 - debug   :: usually disabled by default to troubleshoot functionality

Dlatego, jeśli chcemy zobaczyć wszystkie ostrzeżenia, można wydać następujące polecenie za pośrednictwem journalctl -

[root@centos rdc]# journalctl -p 4
-- Logs begin at Sun 2017-03-19 22:01:57 MDT, end at Wed 2017-03-22 22:33:42 MDT. --
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: RSDP 00000000000f6a10 00024
(v02 PTLTD )
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: XSDT 0000000095eea65b 0005C
(v01 INTEL  440BX    06040000 VMW  01
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACP 0000000095efee73 000F4
(v04 INTEL  440BX    06040000 PTL  00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: DSDT 0000000095eec749 1272A
(v01 PTLTD  Custom   06040000 MSFT 03
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: FACS 0000000095efffc0 00040
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: BOOT 0000000095eec721 00028
(v01 PTLTD  $SBFTBL$ 06040000  LTP 00
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: APIC 0000000095eeb8bd 00742
(v01 PTLTD  ? APIC   06040000  LTP 00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: MCFG 0000000095eeb881 0003C
(v01 PTLTD  $PCITBL$ 06040000  LTP 00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: SRAT 0000000095eea757 008A8
(v02 VMWARE MEMPLUG  06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: HPET 0000000095eea71f 00038
(v01 VMWARE VMW HPET 06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: ACPI: WAET 0000000095eea6f7 00028
(v01 VMWARE VMW WAET 06040000 VMW  00 
Mar 19 22:01:57 localhost.localdomain kernel: Zone ranges: 
Mar 19 22:01:57 localhost.localdomain kernel:   DMA      [mem 0x000010000x00ffffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   DMA32    [mem 0x010000000xffffffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   Normal   empty 
Mar 19 22:01:57 localhost.localdomain kernel: Movable zone start for each node 
Mar 19 22:01:57 localhost.localdomain kernel: Early memory node ranges 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x000010000x0009dfff] 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x001000000x95edffff] 
Mar 19 22:01:57 localhost.localdomain kernel:   node   0: [mem 0x95f000000x95ffffff] 
Mar 19 22:01:57 localhost.localdomain kernel: Built 1 zonelists in Node order,
mobility grouping on.  Total pages: 60 
Mar 19 22:01:57 localhost.localdomain kernel: Policy zone: DMA32 
Mar 19 22:01:57 localhost.localdomain kernel: ENERGY_PERF_BIAS: Set to
'normal', was 'performance'

Powyższe pokazuje wszystkie ostrzeżenia w systemie z ostatnich 4 dni.

Nowy sposób przeglądania i przeglądania dzienników za pomocą systemd wymaga niewielkiej praktyki i badań, aby się z nim zapoznać. Jednak ze względu na różne formaty wyjściowe i szczególną uwagę na to, że wszystkie spakowane dzienniki demonów są uniwersalne, warto się tym zająć. Journald oferuje dużą elastyczność i wydajność w porównaniu z tradycyjnymi metodami analizy dziennika.