Um guia para o processo de limpeza do diário do systemd [com exemplos]
Systemd vem com muitos recursos integrados para gerenciar os logs do sistema. Neste guia, explicamos como você pode gerenciar diários e logs do sistema e tomar medidas sobre eles, como rotação, arquivamento e limpeza de logs. Também explicamos o método manual de limpeza do diário do sistema e o uso de alterações no arquivo de configuração .
Se a sua distribuição Linux suporta systemd, ela coleta logs de todos os processos e aplicativos do sistema a cada segundo que inicia desde a inicialização. Todos esses eventos de registro são gerenciados pelo daemon journald
do systemd. O journald coleta todos os logs (informações, avisos, erros, etc.) e os armazena como dados binários nos arquivos do disco.
Como os logs permanecem no disco e a cada segundo são coletados, eles ocupam um enorme espaço em disco; especialmente para sistemas e servidores mais antigos. Por exemplo, em um dos meus sistemas de teste que está em execução há cerca de um ano, o tamanho do arquivo de log está em GB.
Se você gerencia vários sistemas e servidores, é sempre recomendável gerenciar adequadamente os logs do journald para uma operação eficiente. Vamos dar uma olhada em como você pode gerenciar os arquivos de log.
O diário do systemd Manutenção
Usando o utilitário journalctl do systemd, você pode consultar esses logs e realizar várias operações neles. Por exemplo, visualizando os arquivos de log de diferentes inicializações, verifique os últimos avisos, erros de um processo ou aplicativo específico. Se você não sabe disso, sugiro que você siga rapidamente este tutorial – “use o journalctl para visualizar e analisar logs do Systemd [com exemplos]” antes de seguir este guia.
Onde estão os arquivos de log do diário físico?
O daemon journald do systemd coleta logs de cada inicialização. Isso significa que ele classifica os arquivos de log de acordo com a inicialização.
Os logs são armazenados como binários no caminho /var/log/journal
com uma pasta como ID da máquina.
Por exemplo:
Captura de tela do arquivo de diário físico -1
Captura de tela dos arquivos do diário físico -2
Além disso, lembre-se de que, com base na configuração do sistema, os arquivos de diário de tempo de execução são armazenados em /run/log/journal/
. E estes são removidos em cada inicialização.
Posso excluir manualmente os arquivos de log?
Você pode, mas não faça isso. Em vez disso, siga as instruções abaixo para limpar os arquivos de log e liberar espaço em disco usando utilitários journalctl.
Quanto espaço em disco é usado pelos arquivos de log do systemd?
Abra um terminal e execute o comando abaixo.
journalctl --disk-usage
Isso deve fornecer quanto é realmente usado pelos arquivos de log em seu sistema.
comando de uso de disco journalctl
Se você possui um ambiente de desktop gráfico, pode abrir o gerenciador de arquivos e navegar pelo caminho /var/log/journal
e verificar as propriedades.
processo de limpeza do diário do systemd
A maneira eficaz de limpar os arquivos de log deve ser feita por journald.conf
um arquivo de configuração. Idealmente, você não deve excluir manualmente os arquivos de log, mesmo que o journalctl forneça o utilitário para fazer isso.
Vamos dar uma olhada em como você pode excluí-lo manualmente, depois explicarei as alterações de configuração em journald.conf
para que você não precise excluir manualmente os arquivos de vez em quando; Em vez disso, o systemd cuida disso automaticamente com base na sua configuração.
Exclusão manual
Primeiro, você precisa limpar
e girar
os arquivos de log. A rotação é uma forma de marcar os arquivos de log ativos atuais como um arquivo e criar um novo arquivo de log a partir deste momento. A opção flush solicita que o daemon de diário libere quaisquer dados de log armazenados em /run/log/journal/
em /var/log/journal/
, se o armazenamento persistente estiver ativado.
Então, após liberar e girar, você precisa executar o journalctl com as opções vácuo-size
, vacuum-time
e vacuum-files
para forçar o systemd para limpar os registros.
Exemplo 1:
sudo journalctl --flush --rotate
sudo journalctl --vacuum-time=1s
O conjunto de comandos acima remove todos os arquivos de log de diário arquivados até o último segundo. Isso efetivamente limpa tudo. Portanto, tenha cuidado ao executar o comando.
limpeza de diário – exemplo
Após a limpeza:
Após a limpeza – uso do espaço do diário
Você também pode fornecer os seguintes sufixos conforme sua necessidade após o número.
- s: segundos
- m: minutos
- h: horas
- dias
- meses
- semanas
- anos
Exemplo 2:
sudo journalctl --flush --rotate
sudo journalctl --vacuum-size=400M
Isso limpa todos os arquivos de log de diário arquivados e retém os últimos 400 MB de arquivos. Lembre-se de que esta opção se aplica apenas a arquivos de log arquivados, e não a arquivos de diário ativos. Você também pode usar sufixos conforme abaixo.
- K: KB
- M: MB
- G:GB
Exemplo 3:
sudo journalctl --flush --rotate
sudo journalctl --vacuum-files=2
A opção de arquivos de vácuo limpa todos os arquivos de diário abaixo do número especificado. Portanto, no exemplo acima, apenas os 2 últimos arquivos de diário são mantidos e todo o resto é removido. Novamente, isso só funciona nos arquivos arquivados.
Você pode combinar as opções se quiser, mas eu recomendo não fazer isso. No entanto, certifique-se de executar primeiro a opção --rotate
.
Exclusão automática usando arquivos de configuração
Embora os métodos acima sejam bons e fáceis de usar, é recomendado que você controle o processo de limpeza do arquivo de log do diário usando os arquivos de configuração do journald presentes em /etc/systemd/journald.conf
.
O systemd fornece muitos parâmetros para você gerenciar com eficácia os arquivos de log. Ao combinar esses parâmetros, você pode limitar efetivamente o espaço em disco usado pelos arquivos de diário. Vamos dar uma olhada.
journald.conf parameter | Description | Example |
SystemMaxUse | Specifies the maximum disk space that can be used by the journal in persistent storage | SystemMaxUse=500M |
SystemKeepFree | Specifies the amount of space that the journal should leave free when adding journal entries to persistent storage. | SystemKeepFree=100M |
SystemMaxFileSize | Controls how large individual journal files can grow to in persistent storage before being rotated. | SystemMaxFileSize=100M |
RuntimeMaxUse | Specifies the maximum disk space that can be used in volatile storage (within the /run filesystem). | RuntimeMaxUse=100M |
RuntimeKeepFree | Specifies the amount of space to be set aside for other uses when writing data to volatile storage (within the /run filesystem). | RuntimeMaxUse=100M |
RuntimeMaxFileSize | Specifies the amount of space that an individual journal file can take up in volatile storage (within the /run filesystem) before being rotated. | RuntimeMaxFileSize=200M |
Se você adicionar esses valores em um sistema em execução no arquivo /etc/systemd/journald.conf
, será necessário reiniciar o journald após atualizar o arquivo. Para reiniciar use o seguinte comando.
sudo systemctl restart systemd-journald
Verificação de arquivos de log
É mais sensato verificar a integridade dos arquivos de log depois de limpá-los. Para fazer isso execute o comando abaixo. O comando mostra PASS, FAIL no arquivo de diário.
journalctl --verify
verificar arquivos de log
Notas finais
Espero que este guia ajude você a compreender os fundamentos do processo de gerenciamento de diário do systemd. Com eles, você pode gerenciar o espaço em disco usado pelos arquivos de log em seu sistema ou servidores, limitando o espaço e limpando arquivos de log antigos. Estes são apenas os comandos de orientação. Você pode combiná-los de várias maneiras para atender às demandas do sistema.
- manual do jornalctl
- manual do jornal.conf