Header Ads

Como usar o journalctl para ler logs do sistema Linux

Fatmawati Achmad Zaenuri / Shutterstock

O log do sistema Linux foi alterado com a introdução do systemd. Aprenda a usar o comando journalctl para ler e filtrar mensagens de log do sistema.

Registro centralizado

Sem estranhar a controvérsia, o gerente de sistemas e serviços do systemd introduziu uma mudança significativa na maneira como os logs do sistema são coletados. Os logs costumavam estar localizados em locais diferentes no sistema de arquivos de acordo com o serviço ou daemon que os estava criando. Mas todos eles tinham uma coisa em comum. Eles eram arquivos de texto simples.

Com systemd, todos os arquivos de log do sistema, de inicialização e do kernel são coletados e gerenciados por uma solução de log central e dedicada. O formato em que eles são armazenados é binário. Uma coisa que facilita é conseguir extrair os dados em diferentes formatos, como JSON, como veremos.

também pode facilitar a referência cruzada de informações relacionadas que anteriormente teriam sido registradas em arquivos de log separados. Como os dados agora estão em um único diário, os dados de várias fontes de interesse podem ser selecionados e exibidos em uma única lista entrelaçada de entradas.

journalctl é a ferramenta usada para trabalhar com o diário.

journalctl sem frescura

Você pode chamar journalctl sem parâmetros de linha de comando:

 journalctl 

journalctl exibe o diário inteiro, com as entradas mais antigas no topo da lista. A lista é exibida em menos, permitindo que você pagine e pesquise usando os recursos de navegação habituais de menos. Você também pode usar as teclas Seta para a esquerda e Seta para a direita para rolar para o lado e ler entradas de log amplas.

Pressionar a tecla Encerrar saltará diretamente para o final da lista e para as mais recentes entradas de log.

Pressione Ctrl + C para sair.

RELACIONADO: Como usar o comando less no Linux

Embora o journalctl possa ser chamado sem usar o sudo, você garantirá que veja todos os detalhes no log se usar o sudo.

 sudo journalctl 

Se necessário, você pode fazer com que o journalctl envie sua saída para a janela do terminal, em vez de para menos, usando a opção --no-pager.

 sudo journalctl --no-pager 

A saída rola rapidamente pela janela do terminal e você retorna ao prompt de comando.

Para limitar o número de linhas retornadas pelo journalctl, use a opção -n (linhas). Vamos pedir dez linhas de saída:

 sudo journalctl -n 10 

Após as atualizações do diário

Para fazer o journalctl exibir as entradas mais recentes à medida que chegam ao diário, use a opção -f (follow).

 sudo journalctl -f 

A entrada mais recente tem um carimbo de data / hora de 07:09:07. À medida que novas atividades ocorrem, as novas entradas são anexadas à parte inferior da exibição. Perto de atualizações em tempo real, é legal!

Às 07:09:59, um aplicativo chamado geek-app injetava uma entrada de log no diário que dizia: "Nova mensagem do HTG".

Alterando o formato do visor

Como o diário é um arquivo binário, os dados nele precisam ser traduzidos ou analisados ​​em texto antes que possam ser exibidos para você. Com analisadores diferentes, diferentes formatos de saída podem ser criados a partir dos mesmos dados de origem binária. Existem vários formatos diferentes que o journalctl pode usar.

A saída padrão é o formato curto, muito semelhante ao formato clássico de log do sistema. Para solicitar explicitamente o formato curto, use a opção -o (output) com o modificador curto.

 sudo journalctl -n 10 -o curto-completo 

Da esquerda para a direita, os campos são:

  • A hora em que a mensagem foi criada, no horário local.
  • O nome do host.
  • O nome do processo. Este é o processo que gerou a mensagem.
  • A mensagem de log.

Para obter um carimbo de data e hora completo, use o modificador curto-completo:

 sudo journalctl -n 10 -o curto-completo 

Os formatos de data e hora nesta saída são o formato em que você precisa fornecer datas e horas ao selecionar mensagens de log por período, como veremos em breve.

Para ver todos os metadados que acompanham cada mensagem de log, use o modificador detalhado.

 sudo journalctl -n 10 -o verbose 

Existem muitos campos possíveis, mas é raro que todos os campos estejam presentes em uma mensagem.

Um campo que vale a pena discutir é o campo Prioridade. Neste exemplo, ele tem um valor de 6. O valor representa a importância da mensagem:

  • 0: Emergência. O sistema está inutilizável.
  • 1: Alerta. Foi sinalizada uma condição que deve ser corrigida imediatamente.
  • 2: Crítica. Isso abrange falhas, coredumps e falhas significativas em aplicativos primários.
  • 3: Erro. Um erro foi relatado, mas não é considerado grave.
  • 4: Aviso. Chama a sua atenção uma condição que, se ignorada, pode se tornar um erro.
  • 5: Aviso. Usado para relatar eventos incomuns, mas não erros.
  • 6: Informações. Mensagens operacionais regulares. Isso não requer ação.
  • 7: Depuração. Mensagens colocadas nos aplicativos para facilitar a depuração.

Se você deseja que a saída seja apresentada como objetos JSON (JavaScript Object Notation) formados corretamente, use o modificador json:

 sudo journalctl -n 10 -o json 

Cada mensagem é encapsulada adequadamente como um objeto JSON bem formado e exibida uma mensagem por linha de saída.

Para que a saída JSON seja bem impressa, use o modificador json-pretty.

 sudo journalctl -n 10 -o json-pretty 

Cada objeto JSON é dividido em várias linhas, com cada par nome-valor em uma nova linha.

Para ver apenas as mensagens de entrada de log, sem registro de data e hora ou outros metadados, use o modificador cat:

 sudo journalctl -n 10 -o cat 

Este formato de exibição pode tornar mais difícil identificar qual processo disparou o evento log, embora algumas mensagens contêm uma pista.

Selecionando mensagens de log por período de tempo

Para limitar a saída do journalctl para um período em que você estiver interessado, use as opções -S (since) e -U (till).

Para ver as entradas do log desde uma hora e data específica, use este comando:

 sudo journalctl -S "2020-91-12 07:00:00" 

O visor contém apenas mensagens que chegaram após a data e hora no comando.

Para definir um período que você deseja relatar, use as opções -S (desde) e -U (até) juntas. Este comando examina as mensagens de log de um período de 15 minutos .:

 sudo journalctl -S "2020-91-12 07:00:00" -U "2020-91-12 07:15:00" 

Este é um ótimo uso de combinação, se você sabe que algo estranho aconteceu no seu sistema, e aproximadamente quando isso aconteceu.

Usando períodos de tempo relativos

Você pode usar o endereço relativo ao selecionar seus períodos de tempo. Isso significa que você pode dizer coisas como 'me mostre todos os eventos de um dia atrás até agora'. É exatamente isso que esse comando significa. O “ d ” significa "dia" ” e o "-120"; -1 ​​” significa um dia no passado.

 sudo journalctl -S -1d 

As mensagens de log são listadas a partir das 00:00:00 de ontem, até o 'agora.' ”

Se você deseja investigar algo que aconteceu no passado recente, pode especificar um período de tempo relativo medido em horas. Aqui estamos revisando as mensagens de log da última hora:

 sudo journalctl -S -1h 

As mensagens da última hora são exibidas para você. Você também pode usar o “ m ” definir períodos de tempo relativos medidos em minutos e “ w ” por semanas.

journalctl entende hoje, ontem e amanhã. Esses modificadores fornecem uma maneira prática de especificar períodos de tempo comuns. Para ver todos os eventos que aconteceram ontem, use este comando:

 sudo journalctl -S ontem 

Todos os eventos de log do diário que ocorreram ontem, até meia-noite às 00:00:00, são recuperados e exibidos para você.

Para ver todas as mensagens de log recebidas hoje até agora, use este comando:

 sudo journalctl -S hoje 

Todas as 00:00:00 até a hora em que o comando é emitido, são exibidas.

Você pode misturar os diferentes modificadores de período. Para ver tudo de dois dias atrás até o início de hoje, use este comando:

 sudo journalctl -S -2d -U hoje 

Tudo, desde antes de ontem até hoje, é recuperado e exibido.

Selecionando mensagens de log por campos de dados

Você pode procurar mensagens de log que correspondam a uma ampla variedade de campos do diário. Essas pesquisas tentam encontrar correspondências nos metadados anexados a cada mensagem. É recomendável que você consulte a lista de campos e escolha os que serão mais úteis para você.

Lembre-se de que um aplicativo preenche todos os campos ou não, depende inteiramente dos autores do aplicativo. Você não pode garantir que todos os campos serão preenchidos.

Todos os modificadores de campo do diário são usados ​​da mesma maneira. Usaremos alguns em nossos exemplos abaixo. Para procurar mensagens de log de um aplicativo específico, use o modificador _COMM (comando). Se você também usar a opção -f (follow), o journalctl rastreará novas mensagens desse aplicativo assim que elas chegarem.

 sudo journalctl -f _COMM = geek-app 

Você pode procurar entradas de log usando o ID do processo que gerou a mensagem de log. Use o comando ps para encontrar a identificação do processo do daemon ou aplicativo que você está procurando.

 sudo journalctl _PID = 751 

Na máquina usada para pesquisar este artigo, o daemon SSH é o processo 751.

Você também pode pesquisar por ID do usuário. Este é o ID do usuário da pessoa que iniciou o aplicativo ou comando ou que possui o processo.

 sudo journalctl _UID = 1000 

Todas as mensagens associadas a qualquer outro ID de usuário são filtradas. Somente mensagens relacionadas ao usuário 1000 são mostradas:

Outra maneira de procurar mensagens de log relacionadas a um aplicativo específico é fornecer o caminho para o executável.

 sudo journalctl / usr / bin / anacron 

Todas as mensagens de log do anacronscheduler são recuperadas e exibidas.

Para facilitar a pesquisa, podemos pedir ao journalctl para listar todos os valores que ele possui, para qualquer um dos campos do diário.

Para ver os IDs de usuário para os quais o journalctl registrou mensagens de log, use a opção -F (fields) e passe o identificador de campo _UID.

 journalctl -F _UID 

Vamos fazer isso de novo e ver os IDs do grupo (GID):

 journalctl -F _GID 

Você pode fazer isso com qualquer um dos identificadores de campo do diário.

Listando mensagens do kernel

Existe uma maneira embutida de isolar as mensagens do kernel rapidamente. Você não precisa procurá-los e isolá-los. A opção -k (kernel) remove todas as outras mensagens e fornece uma visão instantânea das entradas de log do kernel.

 sudo journalctl -k 

O destaque reflete a importância da mensagem, de acordo com os valores no campo Prioridade.

Analisando mensagens de inicialização

Se você tem um problema relacionado à inicialização que deseja investigar, o journalctl está coberto. Talvez você tenha adicionado um novo hardware e ele não esteja respondendo ou um componente de hardware que funcionava anteriormente não funcione mais após a última atualização do sistema.

Para ver as entradas de log relacionadas à sua última inicialização, use a opção -b (boot):

 journalctl -b 

As entradas de log da última inicialização são mostradas para você.

Quando dizemos "última inicialização", ” queremos dizer o processo de inicialização que deu vida ao seu computador na sua sessão de logon atual. Para ver as botas anteriores, você pode usar um número para informar ao journalctl em qual inicialização você está interessado. Para ver a terceira inicialização anterior, use este comando:

 journalctl -b 3 

Geralmente, se você teve um problema e teve que reiniciar sua máquina, é uma sequência de inicialização anterior em que você está interessado. Portanto, este é um formulário de comando comum.

É fácil se misturar com a sequência de botas. Para ajudar, podemos pedir ao journalctl para listar as botas que ele gravou em seu diário, usando a opção --list-boots.

 journalctl --list-boots 

Você pode identificar a inicialização para a qual deseja ver as mensagens do registro de data e hora e, em seguida, usar o número na coluna da esquerda para obter as mensagens de log para essa sequência de inicialização. Você também pode escolher o identificador de inicialização de 32 bits e passá-lo ao journalctl.

 sudo journalctl -b 1f00248226ed4ab9a1abac86e0d540d7 

As mensagens de log da sequência de inicialização solicitada são recuperadas e exibidas.

Gerenciamento do espaço no disco rígido do diário

É claro que o diário e todas as suas mensagens de log são armazenadas no disco rígido. Isso significa que eles ocuparão espaço no disco rígido. Para ver quanto espaço foi ocupado pelo diário, use a opção --disk-use.

 journalctl - uso de disco 

Nos discos rígidos de hoje, 152 MB não têm muito espaço, mas, para fins de demonstração, ainda o reduziremos. Existem duas maneiras de fazer isso. A primeira é definir um limite de tamanho ao qual você deseja reduzir o diário. É claro que crescerá novamente, mas podemos podá-lo agora, pronto para esse novo crescimento.

Usaremos a opção --vacuum-size, maravilhosamente intitulada, e passaremos no tamanho que gostaríamos que o diário fosse reduzido para. Pediremos 100 MB. A maneira de pensar nisso é que estamos pedindo ao journalctl que jogue fora o que puder, mas não vá abaixo de 100 MB.

 journalctl --vacuum-size = 100M 

A outra maneira de reduzir o tamanho do diário é usar a opção --vacuum-time. Esta opção instrui o journalctl a descartar as mensagens anteriores ao período que você fornece na linha de comando. Você pode usar dias, semanas, meses e anos no período.

Vamos eliminar todas as mensagens com mais de uma semana:

 journalctl --vacuum-time = 1weeks 

Dados vs. Informações

Os dados não são úteis, a menos que você possa obtê-los e utilizá-los. Então se torna uma informação útil. O comando journalctl é uma ferramenta flexível e sofisticada que permite acessar as informações de interesse de várias maneiras.

Você pode usar praticamente qualquer trecho de informação que precise incluir nas mensagens de log necessárias.

Via: How to Geek

Veja Também:

Nenhum comentário