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


78

L'esecuzione journalctlin 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 journalctlnon fornisce --list-boots).

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

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

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

Risposte:


99

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 si journaldmantengono i messaggi di registro degli stivali precedenti è configurato tramite /etc/systemd/journald.conf. L'impostazione predefinita in CentOS 7 è:

[Journal]
Storage=auto

Dove la pagina man journald.conf spiega autocome:

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 creata se necessario, quindi la sua esistenza controlla dove vanno i dati di registro .

(sottolinea il mio)

La pagina man 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 è stato 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 di default al di fuori di journald via /var/log/messagese delle versioni ruotate /var/log/messages-YYYYMMDDche sono scritte da rsyslogd (che gira 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 esempio tramite

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

6
A systemctl restart systemd-journalddovrebbe farlo. Quindi non è necessario il riavvio.
xx4h,

@ xx4h, aggiornata la risposta
maxschlepzig

9
In Debian questo è documentato a /usr/share/doc/systemd/README.Debian: install -d -g systemd-journal /var/log/journal.
pevik,

@pevik, ho esaminato un sistema CentOS 7 (dove ho appena usato mkdir) e le autorizzazioni attuali sono drwxr-sr-x. 3 root systemd-journal: forse Journald corregge le autorizzazioni / proprietà durante l'inizializzazione.
maxschlepzig

8
Ho imparato un trucco accurato: se invii un USR1segnale invece di riavviarlo, non perdi il contenuto del journal corrente. killall -USR1 systemd-journald
James B,

1
systemctl restart systemd-journald

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

mkdir /var/log/journal

C'è un cambiamento in v208:

systemd-journald non adatterà 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/journaldopomkdir /var/log/journal

Vedi anche :


Hm, o fai un `chmod 4755 / var / log / journal; chown root: systemd-journal!: 2 '- oppure fai semplicemente un riavvio. Aggiornerò la mia risposta.
maxschlepzig,


chmod 4755 /var/log/journal; chown root:systemd-journal !:2funziona bene. ma tmpfiles: usa la magia ACL nelle directory journal
Evgeny Vereshchagin

ok, un altro bug :) - Ho aggiornato la mia risposta.
maxschlepzig,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.