Editado 2 dias atrás por ExtremeHow Equipe Editorial
DebianjournalctlRegistrosInterface de Linha de ComandoAdministração de SistemasLinuxMonitoramentoCódigo AbertoSolução de problemasSoftware
Tradução atualizada 2 dias atrás
O Debian é conhecido por sua estabilidade e vasto repositório de pacotes de software. Um dos principais aspectos de manter um sistema estável e seguro é monitorar regularmente os logs do sistema. Os logs ajudam os administradores de sistemas a entender o que está acontecendo dentro do sistema. Eles podem fornecer informações valiosas para solucionar problemas ou entender o desempenho do sistema.
O método tradicional de gerenciamento de logs em sistemas Linux é usar arquivos de texto localizados no diretório /var/log
. Esses logs são gerenciados por vários serviços, como syslog
ou, mais especificamente, rsyslog
em muitos sistemas Debian. No entanto, com o advento do systemd
, um novo sistema de registro chamado journald
entrou em uso, e ele oferece algumas melhorias e recursos notáveis em comparação com os métodos de registro tradicionais.
Neste documento, discutiremos em detalhes como você pode usar o comando journalctl
para visualizar e gerenciar logs systemd
no Debian. Vamos explorar este comando poderoso e aprender como ele pode ajudá-lo a gerenciar seus logs de sistema de forma eficaz.
Antes de discutir o uso do journalctl
, é importante ter uma compreensão básica do systemd
e do journald
. O systemd
é um gerenciador de sistema e serviços para o sistema operacional Linux. Ele foi projetado para fornecer melhor gerenciamento de serviços e desempenho de inicialização. O journald
é o componente de registro do systemd
, responsável por coletar e armazenar logs.
Diferente dos métodos tradicionais de registro que armazenam logs como arquivos de texto simples, o journald
armazena logs em formato binário, que pode fornecer vários benefícios, incluindo desempenho melhorado, capacidade de indexação e filtragem.
O comando journalctl
é usado para consultar esses dados de log binários, com uma ampla gama de opções de filtragem para torná-lo o mais versátil possível.
A maneira mais simples de usar o journalctl
é executá-lo sem nenhum argumento ou opção. Isso exibirá todas as entradas de log disponíveis, começando pela mais antiga.
$ journalctl
O log será exibido com um carimbo de data e hora e mensagem para cada entrada. No entanto, dado o potencialmente grande volume de entradas, usar uma opção para visualizar o log diariamente não é geralmente prático, especialmente em sistemas que estão em execução há muito tempo.
Frequentemente, você terá interesse em ver apenas os logs mais recentes, em vez de vasculhar entradas mais antigas. Usando o sinalizador -n
seguido por um número, você pode especificar quantas linhas recentes deseja ver:
$ journalctl -n 50
Este comando obtém as últimas 50 entradas de log. O comportamento padrão, sem especificar um número, é mostrar as últimas dez linhas:
$ journalctl -n
Outro recurso útil é a capacidade de acompanhar logs em tempo real à medida que são gerados, semelhante ao comando tail -f
para logs tradicionais. Isso pode ser alcançado com o sinalizador -f
:
$ journalctl -f
Este comando exibirá novas entradas de log à medida que aparecem, o que é especialmente útil para monitorar a saída de logs durante sessões de resolução de problemas.
Um dos aspectos poderosos do journalctl
é sua capacidade de filtrar logs usando uma variedade de critérios. Isso é importante quando você precisa identificar certos eventos ou tipos de entradas de log.
Você pode facilmente filtrar os logs por um intervalo de tempo específico usando as opções --since
e --until
. Ambas as opções aceitam vários formatos de tempo, incluindo tempo relativo:
$ journalctl --since "2023-03-01 00:00:00" --until "2023-03-01 23:59:59"
Você também pode usar tempo relativo:
$ journalctl --since "1 hour ago"
Aqui, os logs da última hora são exibidos.
Uma vez que o journald
está intimamente integrado ao systemd
, que gerencia os serviços como "unidades", você pode filtrar os logs para uma unidade de serviço específica. Use o sinalizador -u
seguido pelo nome
da unidade:
$ journalctl -u apache2.service
Isso mostrará apenas logs relacionados ao serviço do Servidor Web Apache, o que é útil para diagnosticar problemas específicos de serviço.
Os logs do systemd têm diferentes prioridades. Se você estiver interessado apenas nas mensagens de log mais sérias, pode filtrar os logs de acordo com essas prioridades:
$ journalctl -p err
Este comando exibirá apenas entradas de log com um nível de prioridade "erro" ou superior, que pode incluir mensagens "críticas", "aviso" e "emergência".
Você pode combinar diferentes filtros para limitar ainda mais os logs. Por exemplo, se você quiser obter mensagens de erro do serviço Apache2 na última hora:
$ journalctl -u apache2.service -p err --since "1 hour ago"
Essa flexibilidade permite que você se concentre rapidamente nos logs de interesse.
Por padrão, o journald
pode não armazenar logs persistentes entre reinicializações em alguns sistemas. Isso pode ser confirmado visualizando os logs após uma reinicialização. Se você deseja habilitar o log persistente, certifique-se de que o diretório /var/log/journal
exista. Se não estiver lá, crie-o:
$ sudo mkdir -p /var/log/journal $ sudo systemctl restart systemd-journald
Isso configurará o journald
para armazenar logs de forma persistente entre reinicializações no formato binário de journal.
Com o tempo, os logs do journal podem se acumular e ocupar um espaço significativo no disco. Você pode gerenciar o uso de espaço em disco com o comando journalctl
:
Você pode ver quanto espaço os logs do journal ocupam usando a opção --disk-usage
:
$ journalctl --disk-usage
Este comando exibirá o espaço total usado pelo log do journal.
Você pode excluir logs mais antigos usando as opções --vacuum-time
, --vacuum-size
ou --vacuum-files
. Por exemplo, se você deseja excluir logs mais antigos que duas semanas, use o seguinte comando:
$ sudo journalctl --vacuum-time=2weeks
Para reter apenas uma certa quantidade de megabytes de logs (por exemplo, 500MB), use:
$ sudo journalctl --vacuum-size=500M
O método acima permite que o log do journal use até o espaço especificado no disco.
Às vezes, pode ser necessário compartilhar ou inspecionar logs fora do ambiente do journal. Você pode exportar logs em vários formatos com journalctl
:
Você pode redirecionar a saída do log do journal para arquivos de texto simples para fácil compartilhamento ou arquivamento:
$ journalctl > /path/to/your/output.txt
Este comando copiará todo o log para um arquivo de texto. Você pode aplicar filtros conforme necessário para limitar a saída.
Para produzir logs no formato JSON, que pode ser analisado programaticamente por várias ferramentas, use a opção -o json
:
$ journalctl -o json-pretty > /path/to/your/output.json
Este comando gerará uma representação JSON dos logs, facilitando a análise programática dos dados de log.
Se você deseja um backup binário que inclua todos os metadados adicionais, pode usar a opção --output-export
:
$ journalctl --output-export > /path/to/backup.journal
Isso permite que você preserve todas as informações específicas do journal em um formato que pode ser facilmente reimportado no systemd-journal
usando journalctl --merge
com o arquivo de backup.
O comando journalctl
é uma ferramenta poderosa em sistemas Debian onde o systemd
é usado para gerenciar logs via journald
. Ele fornece capacidades robustas para visualizar, filtrar e gerenciar logs de sistema, proporcionando uma vantagem significativa sobre os métodos tradicionais de log em termos de flexibilidade e eficiência.
Através de comandos simples, o journalctl
permite que você visualize logs cronologicamente, os acompanhe em tempo real, filtre por várias condições e gerencie os dados de log armazenados em seu sistema. Para administradores de sistemas e usuários, entender como aproveitar o journalctl
pode levar a um melhor monitoramento de eventos do sistema e a uma solução de problemas mais rápida, contribuindo, em última análise, para manter um ambiente operacional suave.
Se você encontrar algo errado com o conteúdo do artigo, você pode