Pesquisa de site

Visualize e analise logs do Systemd usando Journalctl [Guia completo]


Este guia explica os fundamentos do utilitário journalctl do Systemd e seus vários comandos. Você pode usar esses comandos para solucionar problemas de logs de desktop e servidor no Linux. É assim que você pode usar o journalctl para visualizar e analisar logs do Systemd com diferentes exemplos.

Introdução

Muitos dizem que o Systemd não é bom, pesa no sistema e é um tema sempre debatido. Mas você não pode negar que ele fornece um bom conjunto de utilitários para gerenciar e solucionar problemas de um sistema. Imagine que você acaba com um sistema quebrado e sem GUI. Você provavelmente estragou o boot e o GRUB também. Nesses tipos de cenários ou em geral – você pode inicializar a partir de um sistema LIVE, montar sua partição Linux e explorar os logs do Systemd para descobrir o problema.

Systemd tem três componentes básicos como segue –

  • systemd: Gerenciador de sistemas e serviços para sistemas operacionais Linux.
  • systemctl: Comando para examinar e controlar o estado do sistema systemd e do gerenciador de serviços.
  • systemd-analyze: Fornece estatísticas de desempenho de inicialização do sistema e recupera outras informações de estado e rastreamento do sistema e do gerenciador de serviços

Além desses três, existem serviços adicionais que o systemd fornece, como – journald, logind, networkd, etc. Neste guia falaremos sobre o serviço journald do systemd.

journald – daemon de diário do systemd

Por design, o systemd fornece uma maneira centralizada de lidar com todos os logs do sistema operacional de processos, aplicativos, etc. Todos esses eventos de log são tratados pelo daemon journald do systemd. O daemon journald coleta todos os logs de todos os sistemas operacionais Linux e armazena temas como dados binários em arquivos.

As vantagens do registro centralizado de eventos e problemas do sistema como dados binários são muitas. Por exemplo, como os logs do sistema são armazenados como binários e não como texto – você pode traduzir de várias maneiras, como texto, objetos JSON para diversas necessidades. Além disso, é muito fácil rastrear um único evento, pois os logs são armazenados sequencialmente por meio da manipulação de data/hora dos logs.

Lembre-se de que os arquivos de log que o journald coleta têm milhares de linhas e são atualizados para cada evento, cada inicialização. Portanto, se você executa o sistema operacional Linux há muito tempo, o tamanho dos logs do diário deve ser em GB. Como os logs são aos milhares, é melhor filtrar com comandos básicos para saber mais sobre os problemas do sistema.

O arquivo de configuração do journald

O arquivo de configuração do journald está presente no caminho abaixo. Ele contém vários sinalizadores sobre como o registro acontece. Você pode dar uma olhada no arquivo e fazer as alterações necessárias. Mas eu recomendaria não modificar este arquivo a menos que você saiba o que está fazendo.

/etc/systemd/journald.conf

Onde o journald armazena os arquivos de log binários

O journald armazena os logs em formato binário. Eles são armazenados dentro de um diretório neste caminho.

/var/log/journal

Por exemplo, no caminho abaixo há um diretório que contém todos os logs do sistema até o momento.

caminho do arquivo de log do journalctl

Não use o comando cat nem use nano ou vi para abrir esses arquivos. Eles não seriam exibidos corretamente.

Use journalctl para visualizar e analisar logs do Systemd

Comando básico do diário

O comando básico para visualizar logs usando o daemon de diário é –

journalctl

jornalctl

Isso fornece todos os lançamentos contábeis manuais, incluindo erros, avisos, etc., de todos os aplicativos e processos. Ele mostra a lista com o log mais antigo na parte superior e os logs atuais na parte inferior. Você precisa continuar pressionando ENTER para rolar linha por linha. Você também pode usar as teclas PAGE UP e PAGE DOWN para rolar. Pressione q para sair desta visualização.

Como visualizar lançamentos contábeis manuais para fusos horários

Por padrão, o journalctl mostra a hora do log no fuso horário atual do sistema. No entanto, você pode fornecer facilmente o fuso horário em seu comando para converter o mesmo log em um fuso horário diferente. Por exemplo, para visualizar os logs em UTC, use o comando abaixo.

journalctl --utc

jornalctl –utc

Como visualizar apenas erros, avisos, etc. nos logs do diário

Os logs gerados por um sistema têm prioridades diferentes. Alguns logs podem ser um aviso que pode ser ignorado ou alguns podem ser erros críticos. Você pode querer examinar apenas os erros, não os avisos. Isso também é possível usando o comando abaixo.

Para visualizar mensagens do sistema de emergência, use:

journalctl -p 0

diárioctl -p 0

Códigos de erro

0: emergency
1: alerts
2: critical
3: errors
4: warning
5: notice
6: info
7: debug

Quando você especifica o código de erro, ele mostra todas as mensagens desse código e superiores. Por exemplo, se você especificar o comando abaixo, ele mostrará todas as mensagens com prioridade 2, 1 e 0

journalctl -p 2

Como visualizar os logs do diário para uma inicialização específica

Quando você está executando o comando journalctl, ele mostra as informações da inicialização atual da sessão atual que você está executando. Mas também é possível visualizar informações sobre botas anteriores.

Os registros do diário continuam sendo atualizados a cada reinicialização. O diário monitora os logs em diferentes inicializações. Para visualizar, os logs de inicialização usam o comando abaixo.

journalctl --list-boots

lista-boots do journalctl

  • O primeiro número mostra o número exclusivo da faixa de inicialização do journald que você pode usar no próximo comando para analisar aquela inicialização específica.
  • O segundo número é o ID de inicialização que você também pode especificar nos comandos.
  • As próximas duas combinações de data e hora são a duração dos logs armazenados no respectivo arquivo. Isso é muito útil se você deseja descobrir um log ou erro de uma data ou hora específica.

Para visualizar um número de inicialização específico, digite o primeiro número ou o ID de inicialização conforme abaixo.

journalctl -b -45
journalctl -b 8bab42c7e82440f886a3f041a7c95b98

diárioctl -b 45

Você também pode usar a opção -x, que pode adicionar uma explicação das mensagens de erro do systemd em sua tela. Este é um salva-vidas em certas situações.

journalctl -xb -p 3

diárioctl -xb

Como visualizar os registros do diário para um horário e data de duração específicos

O journalctl é poderoso o suficiente para fornecer argumentos do tipo “inglês” no próprio comando para manipulação de hora e data.

Você pode usar a opção --since com uma combinação de “ontem”, “hoje”, “amanhã” ou “agora”.

Alguns dos exemplos de diferentes comandos abaixo. Você pode modificá-los conforme sua necessidade. Eles são autoexplicativos. O formato de data e hora nos comandos abaixo é "YYYY-MM-DD HH:MM:SS"

journalctl --since "2020-12-04 06:00:00"
journalctl --since "2020-12-03" --until "2020-12-05 03:00:00"
journalctl --since yesterday
journalctl --since 09:00 --until "1 hour ago"

journalctl –desde 09:00 –até

Você também pode combinar o acima com as opções de nível de erro.

Como ver os logs de diário específicos do kernel

As mensagens do kernel do Linux também podem ser extraídas dos logs do diário. Para visualizar as mensagens do Kernel da inicialização atual, use apenas o comando abaixo.

journalctl -k

Como ver os logs do diário de um serviço, PID

Você pode filtrar logs específicos de uma unidade de serviço do systemd somente a partir dos logs do journald. Por exemplo, para descobrir os logs do serviço NetworkManager use o comando abaixo.

journalctl -u NetworkManager.service

serviço NetworkManager do jornalctl

Se você não souber o nome do serviço, poderá usar o comando abaixo para listar os serviços systemd em seu sistema.

systemctl list-units --type=service

Como visualizar logs de diário de um usuário, grupo

Se você estiver analisando logs do servidor, este comando será útil quando vários usuários estiverem logados. Você pode primeiro descobrir o ID do usuário usando o comando abaixo a partir do nome de usuário. Por exemplo, para descobrir o id do usuário “debugpoint” –

id -u debugpoint

Em seguida, use esse ID com a opção _UID para visualizar os logs gerados pelo usuário.

journalctl _UID=1000 --since today

jornalctl _UID

Da mesma forma, use a opção _GID para descobrir o mesmo para grupos de usuários.

Como visualizar logs de diário para um executável

Você também pode descobrir os logs do diário de um programa ou executável específico. Por exemplo, se quiser descobrir as mensagens do gnome-shell, você pode executar o comando abaixo.

journalctl /usr/bin/gnome-shell --since today

Journalctl gnome-shell

Notas finais

Espero que este guia ajude você a usar o journalctl para visualizar a análise de logs do systemd em seu desktop Linux ou solução de problemas de servidor. O gerenciamento de diário do systemd é extremamente poderoso, se você souber usar os comandos, facilita um pouco sua vida durante o tempo de depuração. Todas as principais distribuições Linux convencionais usam o Systemd atualmente. Ubuntu, Debian, Fedora, Arch – todos eles usam o systemd como suas ofertas de sistema operacional padrão. Caso você esteja se perguntando sobre distribuições Linux sem systemd, você pode querer verificar MX-Linux, Gentoo, Slackware, Void Linux.

Artigos relacionados