Como visualizo os logs do systemd antes de uma corrupção de diário?

5

Eu tive um problema no servidor hoje em que a CPU estava vinculada a 100%. Eu tive que hard-reset do servidor, a fim de trazê-lo de volta, e agora eu estou tentando determinar a causa da alta carga.

Infelizmente o journalctl não mostrará nenhuma informação de registro desde antes da reinicialização. Eu fiz journalctl --verify e mostra um arquivo corrompido. Eu estou supondo que isso tem algo a ver com o problema, mas como eu ver o log desde antes da corrupção? Eu tentei journalctl --since yesterday , e até tentei desde dois dias atrás, mas ainda sem sorte.

    
por Ben Davis 24.09.2015 / 22:13

2 respostas

2

Tente criar uma partição de log relativamente pequena e adicione-a à opção /etc/fstab with sync e /var/log mount path:

...<previos fstab lines>...
UUID=<UUID of created partition>  /var/log  ext4  rw,sync  0  0

Isso forçará seu sistema a gravar o log diretamente no dispositivo de bloco sem gravar em cache, portanto, as mensagens de log são gravadas no momento em que aparecem e não serão descartadas na reinicialização. Mas lembre-se de que a gravação de log síncrona pode ser bastante IO e não é adequada para uso a longo prazo em servidores de produção.

    
por 12.12.2015 / 15:34
2

Primeiro, vamos falar sobre corrupções (aquelas que são detectadas por journalctl --verify ).

As corrupções no diário não podem ser corrigidas no sentido de que não há redundância no formato do disco. Além disso, em algumas circunstâncias, uma corrupção no meio do arquivo torna sua "cauda" ilegível (este é outro tópico, na verdade). No entanto, journald nunca grava em um arquivo de diário fechado, portanto, todas as corrupções resultantes de desligamentos não limpos não são prejudiciais.

Mas isso é irrelevante.

Você pode ver os registros da inicialização anterior com journalctl -b -1 .

O que está errado com o seu caso é que você nunca verá as últimas N entradas antes de uma reinicialização de hardware, porque o bloco de E / S é normalmente armazenado em cache de write-back. Não há nada que você possa fazer, exceto para fazer síncrono de E / S.

    
por 13.12.2015 / 04:56

Tags