Amministratore Linux: gestione dei registri

systemd ha cambiato il modo in cui viene gestita la registrazione del sistema per CentOS Linux. Invece di ogni demone sul sistema che inserisce i log in posizioni individuali piuttosto che usare strumenti come tail o grep come metodo principale per ordinare e filtrare le voci di log,journald ha portato un unico punto di amministrazione per analizzare i log di sistema.

I componenti principali alla base della registrazione di systemd sono: journal, jounralctl e journald.conf

journald è il demone di registrazione principale ed è configurato modificando journald.conf mentre journalctl viene utilizzato per analizzare gli eventi registrati da journald .

Gli eventi registrati da journald includono: eventi del kernel, processi utente e servizi daemon.

Impostare il fuso orario di sistema corretto

Prima di utilizzare journalctl , dobbiamo assicurarci che l'ora del nostro sistema sia impostata sull'ora corretta. Per fare questo, vogliamo utilizzare timedatectl .

Controlliamo l'ora di sistema corrente.

[[email protected] 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
              
[[email protected] rdc]#

Attualmente, il sistema è corretto per il fuso orario locale. Se il tuo sistema non lo è, impostiamo il fuso orario corretto. Dopo aver modificato le impostazioni, CentOS calcolerà automaticamente lo scostamento del fuso orario dal fuso orario corrente, regolando immediatamente l'orologio di sistema.

Elenchiamo tutti i fusi orari con timedatectl -

[[email protected] rdc]# timedatectl list-timezones 
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau

Questo è l'output conteso da timedatectl list-timezones . Per trovare un fuso orario locale specifico, è possibile utilizzare il comando grep:

[[email protected] rdc]# timedatectl list-timezones | grep -i "america/New_York" 
America/New_York
[[email protected] rdc]#

L'etichetta utilizzata da CentOS è solitamente Paese / Regione con un trattino basso invece dello spazio (New_York rispetto a "New York").

Ora impostiamo il nostro fuso orario -

[[email protected] rdc]# timedatectl set-timezone "America/New_York"

[[email protected] rdc]# date 
Mon Mar 20 02:28:44 EDT 2017

[[email protected] rdc]#

L'orologio di sistema dovrebbe regolare automaticamente l'ora.

Usa journalctl per analizzare i log

Opzioni comuni della riga di comando quando si utilizza journalctl -

Interruttore Azione
-K Elenca solo i messaggi del kernel
-u Elenchi per unità specifica (httpd, sshd, ecc ...)
-b Avvia l'offset dell'etichetta
-o Registra il formato di output
-p Filtri per tipo di registro (nome o numero)
-F Fieldname o fieldnamevalue
--utc Ora in offset UTC
--da Filtra per periodo di tempo

Esamina i registri di avvio

Innanzitutto, esamineremo e configureremo i log di avvio in CentOS Linux. La prima cosa che noterai è che CentOS, per impostazione predefinita, non memorizza il registro di avvio che è persistente durante i riavvii.

Per controllare i log di avvio per istanza di riavvio, possiamo emettere il seguente comando:

[[email protected] 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

[[email protected] rdc]#

Dopo aver riavviato il sistema, possiamo vedere un'altra voce.

[[email protected] 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
 
[[email protected] rdc]#

Ora, esaminiamo l'ultima istanza di registrazione di avvio:

[email protected] 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:

Sopra c'è l'output condensato del nostro ultimo avvio. Potremmo anche fare riferimento a un registro di avvio di ore, giorni, settimane, mesi e persino anni. Tuttavia, per impostazione predefinita CentOS non archivia i registri di avvio persistenti. Per abilitare l'archiviazione persistente dei registri di avvio, è necessario apportare alcune modifiche alla configurazione:

  • Crea punti di archiviazione centrali per i registri di avvio
  • Assegna le autorizzazioni appropriate a una nuova cartella di registro
  • Configurare journald.conf per la registrazione persistente

Configurare la posizione di avvio per i registri di avvio persistenti

La posizione iniziale in cui journald vorrà memorizzare i log di avvio persistenti è / var / log / journal . Poiché questo non esiste per impostazione predefinita, creiamolo -

[[email protected] rdc]# mkdir /var/log/journal

Ora, diamo alla directory le autorizzazioni appropriate per l' accesso daemon journald -

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

Infine, diciamo a journald di memorizzare i log di avvio persistenti. In vim o nel tuo editor di testo preferito, apri /etc/systemd/jounrald.conf " .

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

La linea di cui ci occupiamo è Storage = . Rimuovere prima il commento # , quindi passare aStorage = persistentcome illustrato sopra. Salva e riavvia il tuo sistema CentOS e assicurati che ci siano più voci durante l'esecuzione di journalctl list-boot .

Note- Un ID macchina in costante cambiamento come quello di un provider VPS può impedire a journald di memorizzare i log di avvio persistenti. Esistono molte soluzioni alternative per un tale scenario. È meglio leggere attentamente le attuali correzioni pubblicate nei forum di amministrazione di CentOS, piuttosto che seguire i consigli fidati di coloro che hanno trovato soluzioni alternative VPS plausibili.

Per esaminare un registro di avvio specifico, dobbiamo semplicemente ottenere ogni offset usando journald --list-avvia l'offset con l' opzione -b . Quindi per controllare il secondo registro di avvio che useremmo -

journalctl -b -2

L'impostazione predefinita per -b senza l'offset del registro di avvio specificato sarà sempre il registro di avvio corrente dopo l'ultimo riavvio.

Analizza i registri per tipo di registro

Gli eventi di journald sono numerati e classificati in 7 tipi separati:

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

Quindi, se vogliamo vedere tutti gli avvisi, il seguente comando può essere emesso tramite journalctl -

[[email protected] 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'

Quanto sopra mostra tutti gli avvisi per gli ultimi 4 giorni sul sistema.

Il nuovo modo di visualizzare ed esaminare i registri con systemd richiede poca pratica e ricerca per acquisire familiarità. Tuttavia, con diversi formati di output e un avviso particolare per rendere universali tutti i registri daemon pacchettizzati, vale la pena abbracciarlo. journald offre grande flessibilità ed efficienza rispetto ai tradizionali metodi di analisi dei log.