Autor Subscrever este autor
Avatar do usuário
pagani
Guru
Guru
 
Artigos: 11
Registro: 31 Jan 2014, 14:36
Distro utilizada: manjaro
Versão: 16.06
Ambiente: xfce
Repositório: testing
Habilidade: Intermediate
Pesquisar artigos

Exportar artigo
Compartilhar em
Blogger Delicioso Digg Facebook Feed amigo Google Linked In Live Mixx MySpace Netvibes Reddit Stumble Upon Technorati Twitter Wordpress
 

Trabalhando e diagnosticando problemas com journalctl

ID do artigo: 139
Adaptado por: pagani
Adaptado em: 29 Jun 2016, 22:17
Descrição do artigo: O texto explica como usar o journalctl para diagnosticar problemas.
Link externo para este artigo:
https://www.manjaro-linux.com.br/forum/a=139.html

Imagem

O 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

Por padrão usuários comuns podem fazer uso do 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.

Referência

Texto original Systemd for Administrator e Man page. Adaptação e tradução pagani.

Mudanças

- Holmes, 29/06/2016, inserção do texto.
- Holmes, 29/06/2016, correções pontuais.

Conteúdo distribuído sob a licença GNU FDL

Este artigo foi editado por Holmes em 29 Jun 2016, 22:19
Razão: correções pontuais


^ Voltar ao Topo