journalctl
é, em uma explicação rápida, um componente do systemd. É responsável por capturar as mensagens de log do Syslog, do Kernel, bem como as mensagens de boot do sistema e, também, as mensagens escritas para STDOUT/STDERR de todos os serviços indexando-as e deixando-as disponíveis para o usuário. Pode ser usado em paralelo ou no lugar de um daemon syslog tradicional, como o rsyslog ou o syslog-ng.Para ter uma visão geral sobre os logs, basta digitar:
- Código: Selecionar todos
# journalctl
A saída do
journalctl
se parece muito com uma cópia bit-a-bit do arquivo /var/log/messages
tradicional, porém, sua saída traz, na verdade, uma série de melhorias:- Linhas com o nível de prioridade error (ou superior) são destacadas em vermelho
- Linhas com nível de prioridade notice/warning são destacadas em negrito
- O timestamp do log é convertido para o seu fuso horário;
- A saída é autopaginada com o pager de sua escolha (o padrão é less)
- Ele mostra todos os dados disponíveis, incluindo os logs rotacionados
journalctl
, entretanto, dessa forma, só terão acesso aos seus próprios registros. Para que um usuário comum possa visualizar os logs de todo o sistema, bem como de todos os usuários, é necessário adicioná-lo ao grupo adm
.- Código: Selecionar todos
# usermod -a -G adm <username>
O comando
journalctl
ao ser invocado sem a passagem de parâmetros retorna uma quantidade considerável de informações, porém, as vezes, é necessário observar os logs à medida que são gerados em real time. Temos assim o- Código: Selecionar todos
# journalctl -f
Similar ao
tail -f /var/log/messages
, faz exatamente isso: mostra as últimas dez linhas de registro e espera por mudanças, mostrando-as a medida que estas ocorrem.Para visualizar os registros apenas da inicialização atual podemos emitir o seguinte comando:
- Código: Selecionar todos
# journalctl -b
Com isto, temos todas as mensagens de log não importando as facilidades e nem mesmo o nível de prioridade das mesmas. Entretanto, é possível fazer uma filtragem e escolher, com o parâmetro
-p
, a prioridade emerge, alert, crit, err(error), warning, notice, info, debug.- Código: Selecionar todos
# journalctl -b -p err
É possível, também, mostar os logs de uma determinada data no formato
YYYY-MM-DD
assim:- Código: Selecionar todos
# journalctl --since="2016-06-25"
ou entre um intervalo de tempo no formato
YYYY-MM-DD HH:MM:SS
- Código: Selecionar todos
# journalctl --since="2016-06-29 06:30" --until="2016-06-29 06:45"
Se quiser, pode-se omitir o dia:
- Código: Selecionar todos
# journalctl --since="06:30" --until="06:45"
Para verificar a saída de log de um serviço específico usa-se a opção
-u
mais o nome do serviço, assim:- Código: Selecionar todos
# journalctl -u smbd
Para verificar como anda a saúde dos discos basta digitar:
- Código: Selecionar todos
# journalctl /dev/sda
Ou, então, para verificar problemas em algum binário do sistema, basta apenas informar o caminho completo até mesmo:
- Código: Selecionar todos
# journalctl /bin/avahi-daemon
- Código: Selecionar todos
# journalctl /usr/bin/login
O
journalctl
também possui um detalhamento muito grande de cada saída de log e, além do mais, é possível usar o parâmetro -o
e formartar essa saída com os seguintes valores: short, short-iso, short-precise, verbose, export, json, json-pretty, json-sse e cat:- Código: Selecionar todos
# journalctl -o cat
Outra vantagem do
journalctl
é a possibilidade de passar como parâmetro o UID, GID ou o PID. Para um usuário cujo UID é 1000 pode-se fazer o seguinte comando:
- Código: Selecionar todos
# journalctl _UID=1000
ou para um processo cujo PID seja 624 pode-se emitir o comando:
- Código: Selecionar todos
# journalctl _PID=624
Se quiser verificar o espaço do disco usado pelos arquivos de log basta digitar:
- Código: Selecionar todos
# journalctl --disk-usage
É possível, com esses recursos apresentados, combinar os diversos parâmetros em uma complexa expressão lógica capaz de detectar qualquer problema. Então, use sem moderação.
Adaptação e tradução de: Systemd for Administrator, Man page