risposta-alla-domanda-sullo-sviluppo-web-bd.com

Come posso visualizzare i messaggi di registro degli stivali precedenti in CentOS 7?

L'esecuzione di journalctl in un sistema CentOS 7 stampa solo i messaggi generati dopo l'ultimo avvio.

Il comando

# journalctl --boot=-1

stampe

Failed to look up boot -1: Cannot assign requested address

ed esce con lo stato 1.

Confrontandolo con un sistema Fedora attuale noto che CentOS 7 non ha /var/log/journal (e journalctl non fornisce --list-boots).

Quindi la mia domanda su come visualizzare i messaggi di registro scritti prima dell'ultima data di avvio.

O forse questa funzionalità deve essere abilitata su CentOS 7?

(La pagina man journalctl elenca 'systemd 208' come numero di versione.)

83
maxschlepzig

tl; dr

Su CentOS 7, devi abilitare l'archiviazione permanente dei messaggi di registro:

# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald

In caso contrario, i messaggi di registro del journal non vengono conservati tra gli stivali.

Dettagli

Se journald conserva i messaggi di registro degli stivali precedenti è configurato tramite /etc/systemd/journald.conf. L'impostazione predefinita in CentOS 7 è:

[Journal]
Storage=auto

Dove pagina man journald.conf spiega auto come:

Uno di "volatile", "persistente", "auto" e "nessuno". Se "volatile", i dati del registro journal verranno archiviati solo in memoria, ovvero sotto la gerarchia/run/log/journal (che viene creata se necessario). Se "persistente", i dati verranno archiviati preferibilmente su disco, ovvero al di sotto della gerarchia/var/log/journal (che viene creata se necessario), con un fallback a/run/log/journal (che viene creato se necessario), durante avvio anticipato e se il disco non è scrivibile. " auto " è simile a "persistente" ma la directory /var/log/journal non viene creato se necessario, in modo che la sua esistenza controlli dove vanno i dati del registro .

(sottolinea il mio)

La pagina man di systemd-journald.service afferma quindi che:

Per impostazione predefinita, il journal memorizza i dati di log in/run/log/journal /. Poiché/run/è volatile, i dati di registro vengono persi al riavvio. Per rendere persistenti i dati, è sufficiente creare/var/log/journal/dove systemd-journald memorizzerà i dati.

Apparentemente, il valore predefinito era modificato in Fedora 19 (in memoria persistente) e poiché CentOS 7 è derivato da Fedora 18 - è ancora non persistente lì, per impostazione predefinita. La persistenza è implementata per impostazione predefinita al di fuori di journald tramite /var/log/messages e le versioni ruotate /var/log/messages-YYYYMMDD che sono scritti da rsyslogd (che viene eseguito di default e ottiene il suo input da journald).

Pertanto, per abilitare la registrazione persistente con journald in RHEL/CentOS 7 è necessario

# mkdir /var/log/journal

e quindi correggere le autorizzazioni e riavviare journald, ad es. attraverso

# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
108
maxschlepzig
systemctl restart systemd-journald

Puoi perdere i tuoi registri: vedi https://github.com/systemd/systemd/issues/2236

mkdir /var/log/journal

C'è un modifica in v208:

systemd-journald non adeguerà più il gruppo di file journal che crea al gruppo "systemd-journal". Invece ci affidiamo alla directory journal che appartiene al gruppo "systemd-journal" e al suo setgid bit impostato, in modo che il layer del file system del kernel imponga automaticamente che i file journal ereditino questa assegnazione di gruppo.

Uno snippet tmpfiles.d (5) incluso in systemd assicurerà che il bit e il gruppo setgid siano impostati correttamente nella directory journal se esiste ad ogni avvio.

Quindi, dovresti eseguire qualcosa come systemd-tmpfiles --create --prefix /var/log/journal dopo mkdir /var/log/journal

Vedi anche :

2