Tutorial de Ubuntu 26.04 / Configure retenção do journal e rotação de logs
Gerencie a retenção do journal separadamente da rotação de arquivos de texto comuns. Identifique os coletores em uso e preserve os registros necessários antes de reduzir limites, pois registros antigos podem ser excluídos.
Identifique os caminhos de coleta
systemctl status systemd-journald rsyslog --no-pager
journalctl --disk-usage
journalctl --list-boots
ls /var/log
Um sistema sem rsyslog pode não ter /var/log/syslog. Não use logrotate diretamente nos arquivos binários do journal nem os apague manualmente. Confira na configuração do serviço se cada aplicação escreve no journal ou em arquivo próprio.
Verifique geração e filtros de busca
logger -t ubuntu-course-log 'retention-lab-marker'
journalctl -t ubuntu-course-log --since '5 minutes ago' --no-pager
journalctl -b -p warning --no-pager
Procure o marcador novo e restrinja a consulta por inicialização, tempo, unidade ou prioridade conforme necessário. Uma saída vazia pode indicar falha na geração ou filtro inadequado; investigue cada possibilidade. Não amplie sem necessidade o acesso aos logs do sistema.
Gerencie a retenção do journal em um drop-in
Em uma VM dedicada, faça backup das configurações existentes e examine um arquivo separado como /etc/systemd/journald.conf.d/60-lab-retention.conf. Os valores abaixo são exemplos pequenos de laboratório e não substituem exigências de retenção da organização. Limites menores podem remover registros antigos.
[Journal]
Storage=persistent
SystemMaxUse=200M
RuntimeMaxUse=50M
MaxRetentionSec=7day
Prepare o armazenamento persistente conforme a documentação; no horário planejado, reinicie o journald e confira journalctl --flush, uso em disco e um novo marcador. Por causa dos arquivos ativos e do momento da rotação, o limite de tamanho não é necessariamente um teto imediato exato em bytes.
A referência journald.conf explica armazenamento persistente e limites de tamanho e tempo.
Aplique e restaure a configuração do journal
Teste somente em VM dedicada após preservar independentemente os registros necessários. O código para se o arquivo existir, rejeita um diretório de drop-ins que seja link simbólico e preserva as permissões de um diretório existente. Faça a prática sem outras alterações simultâneas. Os limites de 200M, 50M e sete dias são exemplos; restaurar a configuração não recupera histórico já removido.
(
set -eu
lab_conf=/etc/systemd/journald.conf.d/60-lab-retention.conf
if sudo test -e "$lab_conf" || sudo test -L "$lab_conf"; then
printf 'Existing lab file: inspect it instead of overwriting.\n' >&2
exit 1
fi
backup_dir=$(sudo mktemp -d /root/journal-before-lab.XXXXXX)
sudo cp -a /etc/systemd/journald.conf "$backup_dir/"
if sudo test -d /etc/systemd/journald.conf.d; then
sudo cp -a /etc/systemd/journald.conf.d "$backup_dir/"
fi
if sudo test -L /etc/systemd/journald.conf.d; then
printf 'Drop-in directory is a symlink; inspect manually.\n' >&2; exit 1
fi
if ! sudo test -d /etc/systemd/journald.conf.d; then
sudo install -d -m 0755 /etc/systemd/journald.conf.d
fi
sudo sh -c 'set -C; cat > "$1"' sh "$lab_conf" <<'EOF'
[Journal]
Storage=persistent
SystemMaxUse=200M
RuntimeMaxUse=50M
MaxRetentionSec=7day
EOF
sudo systemd-analyze cat-config systemd/journald.conf
printf 'Review configuration and backup: %s\n' "$backup_dir"
)
Examine os quatro valores e possíveis configurações posteriores no cat-config antes de aplicar. Reiniciar o serviço é diferente de excluir arquivos manualmente. Verifique separadamente o armazenamento persistente, o resultado de flush, o marcador e o histórico das inicializações.
sudo systemctl restart systemd-journald.service && sudo journalctl --flush && sudo journalctl --disk-usage
logger -t ubuntu-course-log 'after-retention-change'
sudo journalctl -t ubuntu-course-log --since '5 minutes ago' --no-pager
Restaure somente o arquivo 60-lab-retention.conf criado nesta prática, depois de conferir que ainda contém o conteúdo esperado e não sofreu outras alterações. Como os arquivos anteriores foram preservados, removê-lo devolve a combinação anterior de configuração, mas não recupera logs excluídos.
sudo rm -- /etc/systemd/journald.conf.d/60-lab-retention.conf && sudo systemctl restart systemd-journald.service && sudo journalctl --flush
sudo systemd-analyze cat-config systemd/journald.conf
Execute o logrotate em arquivos de prática
Com logrotate instalado, o bloco Bash a seguir usa um novo diretório de laboratório no diretório pessoal e um arquivo de estado separado. Ele não usa o estado de rotação do sistema nem os logs reais de aplicações. Execute o bloco completo em Bash e registre o caminho informado. Se a criação da pasta ou uma etapa falhar, o bloco interrompe a prática; inspecione o erro antes de tentar novamente.
if work=$(mktemp -d "$HOME/logrotate-lab.XXXXXX"); then
(
set -eu
for i in {1..200}; do printf 'lab line %04d\n' "$i"; done > "$work/app.log"
cat > "$work/logrotate.conf" <<EOF
"$work/app.log" {
size 1k
rotate 2
compress
missingok
notifempty
create 0600
}
EOF
logrotate -d -s "$work/state" "$work/logrotate.conf"
logrotate -s "$work/state" "$work/logrotate.conf"
ls -l "$work"
printf 'Lab folder: %s\n' "$work"
)
else
printf 'Could not create a lab directory; stop.\n' >&2
false
fi
O modo de depuração apresenta o plano; o segundo comando executa a rotação. Confira o novo app.log e o arquivo compactado; use gzip -cd "$work/app.log.1.gz" para ler as linhas de prática. Aplicações reais podem manter um descritor aberto e exigir tratamento postrotate ou reload conforme sua documentação.
Confira a restauração e o histórico preservado
Restaure e reaplique somente o drop-in alterado. Uma política restaurada não recupera registros já excluídos; são necessárias cópias independentes. Examine a pasta de prática e remova somente arquivos criados por você.
Registre capacidade, duração, leitores autorizados, tratamento de dados sensíveis e detecção de falhas. Verifique separadamente respostas do serviço, geração, pesquisa e leitura após a rotação.




