Como eu exibo mensagens de log de inicializações anteriores no CentOS 7?

72

A execução de journalctl em um sistema CentOS 7 apenas imprime mensagens geradas após a última inicialização.

O comando

# journalctl --boot=-1

imprime

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

e sai com o status 1.

Comparando-o com um sistema atual do Fedora, noto que o CentOS 7 não tem /var/log/journal (e journalctl não fornece --list-boots ).

Assim, minha pergunta como exibir mensagens de log que foram gravadas antes da última data de inicialização.

Ou talvez essa funcionalidade tenha que ser ativada no CentOS 7?

(A página journalctl man lista 'systemd 208' como número de versão.)

    
por maxschlepzig 04.10.2014 / 08:59

2 respostas

94

tl; dr

No CentOS 7, você precisa ativar o armazenamento persistente de mensagens de log:

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

Caso contrário, as mensagens de registro de diário não serão retidas entre as inicializações.

Detalhes

Se journald retém mensagens de log de inicializações anteriores é configurado via /etc/systemd/journald.conf . A configuração padrão no CentOS 7 é:

[Journal]
Storage=auto

Onde a página man journald.conf explica auto como:

One of "volatile", "persistent", "auto" and "none". If "volatile", journal log data will be stored only in memory, i.e. below the /run/log/journal hierarchy (which is created if needed). If "persistent", data will be stored preferably on disk, i.e. below the /var/log/journal hierarchy (which is created if needed), with a fallback to /run/log/journal (which is created if needed), during early boot and if the disk is not writable. "auto" is similar to "persistent" but the directory /var/log/journal is not created if needed, so that its existence controls where log data goes.

(enfatize o meu)

A página do manual systemd-journald.service afirma, portanto:

By default, the journal stores log data in /run/log/journal/. Since /run/ is volatile, log data is lost at reboot. To make the data persistent, it is sufficient to create /var/log/journal/ where systemd-journald will then store the data.

Aparentemente, o padrão era alterado no Fedora 19 (para armazenamento persistente) e como o CentOS 7 é derivado de Fedora 18 - ainda não é persistente, por padrão. A persistência é implementada por padrão fora do journald via /var/log/messages e as versões rotacionadas /var/log/messages-YYYYMMDD que são gravadas pelo rsyslogd (que é executado por padrão e obtém sua entrada do journald).

Assim, para habilitar o log persistente com journald sob o RHEL / CentOS 7, é necessário

# mkdir /var/log/journal

e, em seguida, corrigir as permissões e reiniciar o journald, por exemplo via

# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
    
por 05.10.2014 / 11:03
2
systemctl restart systemd-journald

Você pode perder seus registros: consulte o link

mkdir /var/log/journal

Há uma alteração em v208 :

systemd-journald will no longer adjust the group of journal files it creates to the "systemd-journal" group. Instead we rely on the journal directory to be owned by the "systemd-journal" group, and its setgid bit set, so that the kernel file system layer will automatically enforce that journal files inherit this group assignment.

A tmpfiles.d(5) snippet included in systemd will make sure the setgid bit and group are properly set on the journal directory if it exists on every boot.

Portanto, você deve executar algo como systemd-tmpfiles --create --prefix /var/log/journal após mkdir /var/log/journal

Veja também :

por 30.09.2015 / 02:02