2

[TroubleShooting] Gerenciamento e visualização de logs com o Journal

46 Flares 46 Flares ×

E ai pessoal, vamos falar um pouco do Journal? Ele é uma ferramenta incrível, essencial para qualquer analise e troubleshooting. O Journal e seu utilitário, journalctl, estão disponíveis em praticamente todos os “sabores” recentes do Linux devido a atual adoção do systemd como o software padrão para gerenciamento de inicialização baseado em eventos nesta nossa querida plataforma.

O Journal é um componente do systemd responsável pela visualização e gerenciamento de log. Ele pode ser usado em paralelo com tradicional syslog (rsyslogd, syslog-ng…) e foi desenvolvido para endereçar antigos problemas quanto a organização de logs do sistema operacional. Você ja deve ter se questionado, “onde esta esse bendito log?”. Pois é, o Journal quer facilitar sua vida.

Integrado com o sistema através do serviço journald, ele cria e mantem arquivos binários chamados de journals. Os journals são baseados em informações que são recebidas pelo kernel e por processos a nível de usuário. Estes journals são estruturados e indexados, provendo uma busca muito rápida.

Segue uma coleta das 20 entradas de log mais recentes (-n)  com o comando journalctl.

journalctl -n 20

É possível notar que a estrutura da saída acima é similar a usada em /var/log/messages mas com certos melhoramentos. Caso fosse usado somente o comando sem a opção -n mais o número de entradas, a saída padrão seria todos os demais dados, os quais podem ser visualizados ao modo “less-like”, ou seja, podem ser usadas a tecla space, setas para cima ou para baixo.

Como o Journal centraliza todas as informações de logs, é possível realizar a coleta mais precisa dos mesmos através de filtros.
No exemplo abaixo, foi realizada uma coleta para visualizar a metadado completo sobre a entrada de log referente ao serviço sshd. Note que para fins de coleta de logs é necessário usar a nomenclatura completa com a sua extensão.

journalctl -o verbose -u sshd

É possível também rastrear comportamentos errôneos no sistema, coletando logs por prioridade (-p), do um dado serviço do sistema, como vemos a seguir.

journalctl -p err -u sshd.service

E o mais interessante, a possibilidade de monitorar o sistema em tempo real através do modo “live view”, como vemos a seguir:

journalctl -f

Por padrão, o Journal armazena os arquivos de log na memória, ou num pequeno ring-buffer no diretório /run/log/journal/, que por sua vez é um diretório volátil, não permitindo que os arquivos de log sejam armazenados permanentemente.

systemctl status systemd-journald

Para suprir necessidades tais como realizar um troubleshooting por um longo período de tempo e para que os logs persistam após um reboot, você vai precisar habilitar o persistent storage. E para isso basta realizar o seguinte procedimento:

mkdir -p /var/log/journal
systemctl restart systemd-journald

Após criar o diretório e reiniciar o systemd, valide a mudança no destino do journal. (Runtime para Persistent)

Obs: Se possível, crie um volume para os logs do systemd. =)

:wq!

RECOMENDADO PARA VOCÊ

Avelino Ferreira

“Meu egoísmo é tão egoísta que o auge do meu egoísmo é querer ajudar…”

2 Comments

Dúvidas? Deixe seu comentário ou entre em contato.