Registros e diário
systemd-journald é o serviço de log do sistema no Ubuntu 26.04. Ele coleta e gerencia todos os logs do kernel, serviços e aplicativos. journalctl é a ferramenta de linha de comando para consultar e analisar esses logs.
Noções básicas de jornalctl
Visualizando registros
# View all logs
journalctl
# View the latest logs (tail)
journalctl -e
# Follow new logs in real time (similar to tail -f)
journalctl -f
# View the most recent N entries
journalctl -n 50
# Output without paging
journalctl --no-pager
# Reverse order (newest first)
journalctl -rFormatos de saída
# Short format (default)
journalctl -o short
# Verbose format (shows all fields)
journalctl -o verbose
# JSON format
journalctl -o json
# JSON format (one entry per line, convenient for scripting)
journalctl -o json-lines
# Message content only
journalctl -o catFiltragem de registros
Filtrar por serviço
# View logs for a specific service
journalctl -u nginx.service
# View logs for multiple services
journalctl -u nginx.service -u php-fpm.service
# Follow a specific service's logs in real time
journalctl -u myapp.service -fFiltrar por tempo
# View logs from the current boot
journalctl -b
# View logs from the previous boot
journalctl -b -1
# List all boot records
journalctl --list-boots
# Specify a time range
journalctl --since "2026-03-24 10:00:00"
journalctl --since "2026-03-24 10:00:00" --until "2026-03-24 12:00:00"
# Use relative time
journalctl --since "1 hour ago"
journalctl --since "30 min ago"
journalctl --since today
journalctl --since yesterday --until todayFiltrar por prioridade
Os níveis de prioridade de log variam de 0 (mais grave) a 7 (mais detalhado):
| Nível | Nome | Descrição |
|---|---|---|
| 0 | emergir | O sistema está inutilizável |
| 1 | alerta | Ação imediata necessária |
| 2 | crítico | Erro crítico |
| 3 | errar | Erro |
| 4 | aviso | Aviso |
| 5 | aviso prévio | Normal, mas significativo |
| 6 | informações | Informativo |
| 7 | depurar | Depurar |
# Show only errors and above
journalctl -p err
# Show only warnings
journalctl -p warning
# Show a range of priorities
journalctl -p warning..errFiltrar por outros critérios
# By process PID
journalctl _PID=1234
# By user ID
journalctl _UID=1000
# By executable path
journalctl _EXE=/usr/bin/python3
# Combine conditions
journalctl _SYSTEMD_UNIT=nginx.service -p err --since today
# Kernel logs
journalctl -k
journalctl --dmesgPesquisando conteúdo de registro
# Filter with grep
journalctl -u nginx.service | grep "error"
# Use journalctl's built-in matching
journalctl -g "failed|error|timeout"Configuração de armazenamento de logs
Arquivo de configuração
O arquivo de configuração do journald está localizado em /etc/systemd/journald.conf:
sudo nano /etc/systemd/journald.confOpções de configuração comuns:
[Journal]
# Log storage mode: persistent (to disk), volatile (memory only), auto (default)
Storage=persistent
# Maximum disk space for logs
SystemMaxUse=500M
# Maximum size of a single log file
SystemMaxFileSize=50M
# Maximum retention time
MaxRetentionSec=1month
# Maximum memory usage for logs
RuntimeMaxUse=100M
# Log compression
Compress=yes
# Forward to syslog
ForwardToSyslog=yes
# Rate limiting: max 10000 entries per service per 30 seconds
RateLimitIntervalSec=30s
RateLimitBurst=10000Aplicar alterações de configuração:
sudo systemctl restart systemd-journaldGarantindo a persistência do log
Por padrão, se o diretório /var/log/journal/ não existir, os logs serão mantidos apenas na memória. Para ativar a persistência:
# Create the persistent log directory
sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
# Or set it in the configuration file
# Storage=persistent
# Restart the service
sudo systemctl restart systemd-journaldRotação e limpeza de log
Limpeza manual
# Clean by time: keep only the last 7 days of logs
sudo journalctl --vacuum-time=7d
# Clean by size: keep only 500MB of logs
sudo journalctl --vacuum-size=500M
# Clean by file count: keep only the 5 most recent log files
sudo journalctl --vacuum-files=5
# View current disk usage by logs
journalctl --disk-usageVerifique a integridade do log
# Check log file consistency
journalctl --verifyRelacionamento com syslog
systemd-journald pode funcionar junto com o syslog tradicional (como o rsyslog):
# Check if rsyslog is installed
dpkg -l rsyslog
# rsyslog log files are located under /var/log/
ls /var/log/syslog
ls /var/log/auth.log
ls /var/log/kern.logArquivos de log tradicionais
| Arquivo | Descrição |
|---|---|
/var/log/syslog | Registro geral do sistema |
/var/log/auth.log | Registro de autenticação |
/var/log/kern.log | Registro do kernel |
/var/log/dpkg.log | Log de instalação do pacote |
/var/log/apt/history.log | Histórico de operação do APT |
/var/log/boot.log | Registro de inicialização |
Configurando o rsyslog
# Main configuration file
sudo nano /etc/rsyslog.conf
# Custom rules go in this directory
ls /etc/rsyslog.d/Exemplo de regra rsyslog (gravar logs nginx em um arquivo separado):
# /etc/rsyslog.d/nginx.conf
if $programname == 'nginx' then /var/log/nginx/syslog.log
& stoplogrotate Rotação de registro
logrotate gerencia a rotação de arquivos de log tradicionais:
# Main configuration file
cat /etc/logrotate.conf
# Application configurations directory
ls /etc/logrotate.d/Exemplo de configuração de logrotate personalizado:
sudo nano /etc/logrotate.d/myapp/var/log/myapp/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 myapp myapp
sharedscripts
postrotate
systemctl reload myapp.service > /dev/null 2>&1 || true
endscript
}# Test logrotate manually
sudo logrotate -d /etc/logrotate.d/myapp # dry-run
sudo logrotate -f /etc/logrotate.d/myapp # force executionDicas Práticas
Monitore falhas de inicialização de serviço
# Create a script to monitor failed services
journalctl -p err -u "*.service" --since "5 min ago" --no-pager -o catExportar registros
# Export as a text file
journalctl -u nginx.service --since today > /tmp/nginx-today.log
# Export in binary format (readable by journalctl)
journalctl -u nginx.service -o export > /tmp/nginx.exportVisualizar registros relacionados à E/S de disco
journalctl -k | grep -i "i/o\|error\|disk\|sda"Análise do processo de inicialização
# View logs from the boot process
journalctl -b --no-pager | head -100