Guia: implementar políticas de retenção e compactação de logs do systemd-journald em servidores Ubuntu (VPS) — passo a passo

Por · Publicado em · 8 min de leitura

Caderno fechado sobre um corrimão de madeira, com uma câmera miniatura e uma caneta; fundo desfocado
Caderno fechado com câmera miniatura e caneta, fundo verde desfocado. Foto: Jason Morrison / Pexels

Guia: implementar políticas de retenção e compactação de logs do systemd-journald em servidores Ubuntu (VPS). Você vai entender limites por tamanho e tempo, compressão, controle de rajadas e como aplicar com segurança. No fim, aprenderá a verificar o efeito e monitorar o uso de disco, mantendo rastreabilidade local para suporte e auditoria sem desperdiçar espaço.

Quando ajustar as políticas do journald

Em VPS, espaço de disco é finito. Picos de log podem lotar a partição raiz e degradar serviços. O journald rotaciona por padrão, mas valores genéricos raramente refletem seu risco e orçamento.

Sinais de que é hora de ajustar: crescimento acelerado, alertas de pouco espaço e dificuldade em investigar incidentes mais antigos.

Se você centraliza logs, mantenha uma janela local pequena para diagnóstico rápido. Para retenção longa e busca full‑text, use um pipeline dedicado como no guia Fluentd + Elasticsearch: logs PHP em VPS (guia).

O objetivo é limitar tamanho e idade, manter folga no filesystem e ativar compressão com impacto previsível de CPU.

  • Alertas de disco cheio após deploys verbosos
  • Serviços rodando em nível debug por engano
  • Auditorias exigindo janela mínima local
  • Apps que só escrevem no journald, sem logrotate

Pré-requisitos e checagem inicial

Você precisa de acesso root, systemd ativo e Ubuntu suportado. Antes de mudar, descubra versão do systemd, uso atual de disco e se o armazenamento é persistente.

Guarde um snapshot do estado. Assim você compara o efeito após aplicar a política. Operações de vacuum removem histórico antigo. Faça consciente.

# Versão do systemd e recursos
systemd --version

# Uso atual de disco pelos journals
journalctl --disk-usage

# Espaço livre na partição raiz
df -h /

# Verifica se o armazenamento é persistente (/var/log/journal)
[ -d /var/log/journal ] && echo "persistente" || echo "volátil"

# Quem é mais verboso (amostra)
journalctl -n 200 --priority=info --no-pager | awk '{print $5}' | sort | uniq -c | sort -nr | head

Como o journald armazena, rotaciona e comprime

O journald usa arquivos binários e faz rotação automática. As políticas combinam três eixos: limite de espaço total, tamanho e quantidade dos arquivos e idade máxima das entradas.

A compressão reduz espaço de entradas grandes, com custo moderado de CPU em gravação e leitura. Defina limites que caibam com folga no disco.

Opção O que controla Quando usar
Storage Onde guardar: persistent (/var/log/journal) ou volatile Para manter logs entre reboots, use persistent
SystemMaxUse Teto total de espaço em /var/log/journal Prever uso e caber em discos pequenos
SystemKeepFree Folga mínima no filesystem raiz Evitar consumir a última reserva de espaço
SystemMaxFileSize Tamanho máximo de cada arquivo Arquivos menores e rotações mais frequentes
SystemMaxFiles Quantidade máxima de arquivos Limitar fragmentação e histórico por contagem
RuntimeMaxUse Teto em /run/log/journal (volátil) Controlar uso no boot e em storage volátil
RuntimeKeepFree Folga mínima em /run Evitar pressão em tmpfs durante picos
Compress Compacta entradas grandes Reduz espaço e I/O quando CPU comporta
Seal Assina arquivos para integridade Ambientes com requisitos de integridade
RateLimitIntervalSec / RateLimitBurst Tolerância a rajadas repetitivas Reduz ruído e I/O de mensagens repetidas
MaxRetentionSec Idade máxima do histórico Definir janela fixa por tempo, quando suportado

Perfis práticos para VPS (exemplos iniciais)

Ajuste valores ao tamanho do disco e criticidade do ambiente. Use estes pontos de partida e teste sob sua carga. Todos assumem storage persistente e compressão ativada.

Se você centraliza logs, mantenha janela local menor e dependa do agregador para buscas. Para métricas e correlação, veja também Logs estruturados (JSON) e correlação: guia.

  • Econômico: SystemMaxUse=300M, SystemKeepFree=200M, SystemMaxFileSize=50M, SystemMaxFiles=20, RuntimeMaxUse=100M, MaxRetentionSec=7d
  • Balanceado: SystemMaxUse=1G, SystemKeepFree=500M, SystemMaxFileSize=100M, SystemMaxFiles=50, RuntimeMaxUse=200M, MaxRetentionSec=30d
  • Amigável à auditoria: SystemMaxUse=2G, SystemKeepFree=1G, SystemMaxFileSize=200M, SystemMaxFiles=80, RuntimeMaxUse=400M, MaxRetentionSec=60d

Configuração por drop-in em /etc/systemd/journald.conf.d

Use um drop-in para manter o arquivo padrão intacto e facilitar auditorias. O exemplo abaixo é um perfil balanceado. Ajuste tamanhos e prazos ao seu contexto.

Após salvar, reinicie o serviço para aplicar. Este guia cobre exatamente como implementar políticas de retenção e compactação de logs do systemd-journald em servidores Ubuntu (VPS) sem surpresa de espaço.

sudo mkdir -p /etc/systemd/journald.conf.d
sudo tee /etc/systemd/journald.conf.d/10-retencao-compressao.conf > /dev/null <<'EOF'
[Journal]
# Armazenamento persistente
Storage=persistent

# Limites em /var/log/journal
SystemMaxUse=1G
SystemKeepFree=500M
SystemMaxFileSize=100M
SystemMaxFiles=50

# Limites em /run/log/journal (volátil)
RuntimeMaxUse=200M
RuntimeKeepFree=50M

# Compressão e integridade
Compress=yes
Seal=yes

# Rajadas de mensagens repetidas
RateLimitIntervalSec=30s
RateLimitBurst=1000

# Janela máxima por tempo (se suportado na sua versão)
MaxRetentionSec=30d
EOF

# Aplica a nova configuração
sudo systemctl restart systemd-journald.service

Aplicar agora, rotacionar e recuperar espaço

A nova política rege rotações futuras. Para liberar espaço imediatamente, rode rotação e vacuum. Vacuum remove arquivos antigos. Confirme que o histórico necessário já foi coletado externamente, se for o caso.

Use valores conservadores primeiro. Valide e só então reduza ainda mais a janela ou o teto de uso.

# Uso atual
journalctl --disk-usage

# Força rotação imediata
yes | sudo journalctl --rotate

# Limpa por tamanho/tempo/quantidade (ajuste conforme sua política)
sudo journalctl --vacuum-size=1G
sudo journalctl --vacuum-time=30d
sudo journalctl --vacuum-files=50

# Confere novamente
journalctl --disk-usage

Verificação e monitoramento contínuo

Valide se o journald leu o drop-in e se o consumo de espaço está no alvo. Monitore periodicamente a folga mínima e o uso dos journals.

Para métricas e alertas de capacidade, monte um dashboard. Veja uma abordagem prática em Guia prático: configurar Prometheus e Grafana com Docker Compose em VPS.

Como parte de hardening e operação segura, revise políticas junto com o Checklist de segurança para VPS Linux. Para comparar stacks de observabilidade por logs e traces, consulte o Comparativo: Prometheus+Grafana vs Loki+Tempo.

  • Cheque a configuração efetiva mesclada
  • Garanta storage persistente e permissões corretas
  • Monitore folga mínima e uso total do journal
# Configuração efetiva (inclui drop-ins)
systemd-analyze cat-config systemd/journald.conf

# Diretório persistente e arquivos presentes
test -d /var/log/journal && ls -lh /var/log/journal/*/*.journal || echo "armazenamento volátil"

# Uso total e por arquivo
journalctl --disk-usage
sudo du -h /var/log/journal/* --max-depth=1 2>/dev/null | sort -h

Solução de problemas comuns

Problemas frequentes envolvem armazenamento volátil inesperado, permissões incorretas, chaves desconhecidas em versões antigas e corrupção após panes.

Se sua aplicação gera logs demais, reduza a verbosidade no próprio serviço. As políticas do journald atenuam impacto global, mas a causa deve ser corrigida na origem.

Quando necessário, reaplique a política e rode vacuum com cuidado. Este guia de implementar políticas de retenção e compactação de logs do systemd-journald em servidores Ubuntu (VPS) ajuda a evitar surpresas.

  • Journald usa storage volátil: crie /var/log/journal com permissões adequadas
  • Chave desconhecida (ex.: MaxRetentionSec): remova a opção ou atualize o SO
  • Arquivos corrompidos após queda de energia: verifique integridade e faça vacuum
  • Limpeza agressiva demais: aumente SystemKeepFree ou SystemMaxUse
# 1) Garantir armazenamento persistente
sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
sudo chown root:systemd-journal /var/log/journal
sudo chmod 2755 /var/log/journal
sudo systemctl restart systemd-journald

# 2) Conferir mensagens sobre chaves desconhecidas
journalctl -u systemd-journald -b | grep -i "unknown" || true

# 3) Verificar integridade e limpar excedentes
sudo journalctl --verify || true
yes | sudo journalctl --vacuum-size=1G --vacuum-time=30d

Perguntas frequentes

Compressão no journald consome muita CPU?

Em geral, o custo é moderado em gravação e leitura. Costuma compensar pela redução de I/O e espaço. Em VPS com CPU limitada, ative em janela de menor carga e monitore o impacto antes de adotar globalmente.

É melhor limitar por tamanho ou por tempo?

Ambos ajudam e podem coexistir. Em discos pequenos, um teto por tamanho traz previsibilidade. Se há exigência de janela mínima, combine com tempo. Em versões antigas sem MaxRetentionSec, use apenas limites de espaço e vacuum por tempo.

O journald substitui o rsyslog?

Para muitos servidores, o journald cobre coleta, rotação e consulta local. Se você precisa de protocolos legados ou integrações específicas, mantenha rsyslog ou um agente dedicado em paralelo ao journald.

Como conter um serviço que gera logs demais?

Ajuste o nível de log na aplicação ou unidade systemd correspondente. As políticas de RateLimit do journald reduzem rajadas repetitivas, mas a solução real é corrigir a verbosidade no serviço.

Posso excluir logs manualmente?

Prefira os comandos de vacuum do journalctl para manter consistência. Apagar arquivos diretamente pode causar inconsistências. Se precisar manipular arquivos, pare o journald antes e reinicie depois. Avalie o impacto em auditoria.

Precisa revisar sua política de logs da VPS?

Descreva seu cenário, limites de disco e janelas exigidas. Vamos discutir opções seguras de retenção e compressão do journald para equilibrar auditoria e capacidade.

Falar sobre meu cenário

Veja também