Saltar para o conteúdo
102 · LPIC-1 (parte 2)

108.2 Log do sistema

TópicoT10ObjetivoConfigurar e gerir o log do sistemaPeso3PáginasLPIC-1 (102) - Version 5.0

Resumo Conciso

Ficheiros de Log Importantes

FicheiroConteúdo
/var/log/auth.logAutenticações, sudo, cron jobs
/var/log/syslogLogs centralizados do rsyslogd
/var/log/kern.logMensagens do kernel
/var/log/messagesMensagens informativas não-kernel
/var/log/daemon.logDaemons/serviços em segundo plano
/var/log/mail.logServidor de email
/var/log/wtmpLogins bem-sucedidos
/var/log/btmpTentativas de login malsucedidas
/var/log/faillogTentativas de autenticação falhadas
/var/log/lastlogData/hora dos logins recentes

Comandos para Leitura de Logs

ComandoFunção
less / morePaginador para visualizar logs
zless / zmorePara logs compactados com gzip
tail -fExibe últimas linhas e acompanha novas em tempo real
headExibe primeiras linhas
grepFiltra por strings específicas
who/var/log/wtmp (binário)
utmpdump/var/log/btmp (binário)
faillog/var/log/faillog
lastlog/var/log/lastlog

Facilities (Recursos) do rsyslog

Palavra-chaveDescrição
0kernMensagens do kernel
1userMensagens no nível do utilizador
2mailSistema de email
3daemonDaemons do sistema
4auth, authprivSegurança/autorização
9cronDaemon do relógio
16-23local0-local7Uso local 0-7

Prioridades do rsyslog

CódigoGravidadePalavra-chave
0Emergênciaemerg, panic
1Alertaalert
2Críticocrit
3Erroerr, error
4Avisowarn, warning
5Atençãonotice
6Informativoinfo
7Debugdebug

Formato de Regras rsyslog

bash
<facility>.<priority> <action>
  • Prioridades são hierarquicamente inclusivas
  • - antes do caminho omite fsync após cada mensagem (menos carga em disco)
  • Sem prefixo, é feito fsync após cada mensagem (persistência imediata)

Comandos journalctl (systemd-journald)

OpçãoFunção
-rExibe mensagens em ordem inversa
-fAcompanha novas mensagens em tempo real
-eSalta para o final do diário
-n <N>Exibe últimas N linhas
-k / --dmesgMensagens do kernel (equivalente a dmesg)
-bMensagens da inicialização atual
-b -1Mensagens da inicialização anterior
-p <prioridade>Filtra por prioridade
--since / --untilFiltra por intervalo de tempo
/caminho/executavelFiltra por programa
-u <unidade>Filtra por unidade systemd
--disk-usageEspaço ocupado pelos ficheiros de diário
--vacuum-time=Remove logs antigos por tempo
--vacuum-size=Reduz logs arquivados por tamanho
--vacuum-files=Limita número de ficheiros arquivados

Configuração do Storage no journald.conf

ValorComportamento
volatileArmazena apenas na RAM (/run/log/journal/)
persistentArmazena em disco (/var/log/journal/), cria directório
autoSimilar a persistent, mas não cria directório (padrão)
noneDescarta dados, mas permite encaminhamento

Logrotate — Opções Principais

OpçãoSignificado
weeklyRotaciona semanalmente
rotate NPreserva N semanas de logs
compressCompacta com gzip
delaycompressAdia compactação para próximo ciclo
missingokNão emite erro se log ausente
notifemptyNão rotaciona se vazio
postrotate/endscriptScript executado após rotação

Fluxo de Logs

  1. Aplicativos escrevem em /dev/log ou /dev/kmsg
  2. rsyslogd obtém informações dos sockets/buffers
  3. Conforme regras de /etc/rsyslog.conf, move para ficheiros em /var/log

|---| | Ler /var/log/syslog.7.gz | zless ou zmore | | Ler /var/log/syslog | less ou more | | Filtrar "renewal" em /var/log/syslog | grep | | Ler /var/log/faillog | faillog -a | | Ler /var/log/syslog dinamicamente | tail -f |

Solução: Conforme tabela acima.

Exercício Guiado 2 — Reordenar entrada de log

Enunciado: Reorganize as partes para formar uma mensagem válida.

Partes: debian-server, sshd, [515]:, Sep 13 21:47:56, Server listening on 0.0.0.0 port 22

Solução:

bash
Sep 13 21:47:56 debian-server sshd[515]: Server listening on 0.0.0.0 port 22

Exercício Guiado 3 — Regras rsyslog

Enunciado: Escreva as regras para cada tarefa.

Solução:

bash
# Todas as mensagens mail com prioridade crit e acima → /var/log/mail.critmail.crit    /var/log/mail.crit# Mensagens mail com alert e emergency → /var/log/mail.urgentmail.alert   /var/log/mail.urgent# Todas exceto cron e daemon → /var/log/allmessages*.*;cron.none;daemon.none    /var/log/allmessages# Mensagens mail para host remoto via TCP:514mail.* @@192.168.1.88:514# Apenas warning (exatamente) → /var/log/warnings, sem sync em disco*.=warning    -/var/log/warnings

Exercício Guiado 4 — Opções do logrotate

Enunciado: Explique as opções do trecho /etc/logrotate.d/samba.

Solução:

OpçãoSignificado
weeklyRotaciona semanalmente
missingokNão emite erro se log ausente
rotate 7Preserva 7 semanas de logs
postrotateExecuta script após rotação
endscriptFim do script postrotate
compressCompacta com gzip
delaycompressAdia compactação para próximo ciclo
notifemptyNão rotaciona se vazio

Exercícios Exploratórios

Exercício Exploratório 1 — Filtro baseado em propriedades

Enunciado: Traduza o filtro baseado em expressão para um filtro baseado em propriedades.

Expressão: if $FROMHOST-IP=='192.168.1.4' then ?RemoteLogs

bash
:fromhost-ip, isequal, "192.168.1.4"?RemoteLogs

Exercício Exploratório 2 — Notificação de utilizadores via omusrmsg

Enunciado: Escreva uma regra para enviar todas as mensagens de emergência para root e carol.

bash
*.emerg    :omusrmsg:root,carol

Exercício Exploratório 3 — Filtrar logs com journalctl

Enunciado: Liste todas as mensagens de erro ou superior desde a última inicialização, emitidas pelo serviço sshd.

bash
journalctl -b -p err -u sshd
  • -b limita à inicialização atual
  • -p err filtra prioridade err e acima (crit, alert, emerg)
  • -u sshd filtra pela unidade systemd do SSH

Exercício Exploratório 4 — Criar regra de logrotate personalizada

Enunciado: Crie uma configuração de logrotate para o ficheiro /var/log/meuapp.log que rotacione diariamente, mantendo 14 ficheiros, compactando com atraso e ignorando se o ficheiro não existir.

Criar o ficheiro /etc/logrotate.d/meuapp:

bash
/var/log/meuapp.log {    daily    rotate 14    compress    delaycompress    missingok    notifempty    create 0640 root adm}
  • daily — rotação diária
  • rotate 14 — mantém 14 ficheiros rotacionados
  • compress + delaycompress — compacta com gzip, adiando um ciclo
  • missingok — não emite erro se o ficheiro não existir
  • create 0640 root adm — cria novo ficheiro com permissões e grupo definido