Rotação dos logs


Comandos intermediários do GNU/Linux


Rotação dos logs

Com o tempo, os logs podem ocupar todo o espaço disponível na partição. Por isso, é preciso configurar corretamente a política de rotação dos logs, ou seja, durante quanto tempo os logs serão armazenados no sistema.

logrotate

O logrotate é desenhado para facilitar a administração de sistemas que geram muitos arquivos de log. Todo usuário deve sempre vigiar os arquivos de log porque estes ocupam espaço no disco rígido. Os arquivos de log são importantes porque neles estão contidos os erros do sistema, erros esses que podem ser corrigidos. Entretanto se os arquivos de log não sofrerem rotação, ou seja, não forem apagados e recriados, irão crescer infinitamente.Normalmente o logrotate é rodado pelo cron, com tarefas diárias, semanais ou mensais, porém é possível o uso direto através do comando logrotate.

Sintaxe do Comano

logrotate – [opção] / [arquivo de configuração]

Opções do comando logrotate

  • -d – Debug. É apenas para listar na tela o resultado do comando e não altera os logs.
  • -f – Force. Força o início da rotação mesmo se o sistema ache desnecessário.
  • -m – Mail Diz qual comando usar para enviar um email com os logs.
  • -s – State. Diz ao logrotate para usar um arquivo alternativo. The default arquivo de status é /var/lib/logrotate/status.
  • -usage – Usabilidade. Imprime uma curta mensagem.
Todas estas opções devem se seguidas do arquivo de configuração, de suma importância.Este é o arquivo importante para a manutenção, rotação, envio por email e exclusão dos arquivos de log. Alguns scripts especiais são incluídos na pasta /etc/logrotate.d e são lidos pelo logrotate através do logrotate.conf. Veja algumas dicas para a configuração deste arquivo:

/etc/logrotate.conf
Rotação dos logs [rotate log files weekly]

Neste ítem deve decidir de quando em quando é feita a rotação. Pode ser diária(daily), semanal(weekly), mensal(monthly). Os arquivos de log que não tiveram indicação clara desta rotação seguirão o padrão indicado neste item.

Também pode definir diretamente a rotação desejada deste modo:

# rotate /var/log/wtmp

/var/log/wtmp {
daily
create 0664 root utmp
rotate 1
}


Guardando os logs rotacionados para análise futura [keep 4 weeks wrth of backlogs]

Neste ítem você define quantos backups dos logs você manterá. Se um arquivo é rotacionado semanalmente, você pode definir que o sistema guarde as últimas semanas, no exemplo acima apenas a semana anterior será guardada em um arquivo chamado /var/log/wtmp.1. A sintaxe é:

rotate

Criando logs vazios [create new (empty) log files after rotating old ones]

É importante deixar esta opção, porque assim o logrotate criará um novo arquivo, com as mesmas permissões do anterior, para substituir o antigo, como no exemplo: create.

Comprimindo os logs rotacionados

Também pode salvar os logs rotacionados não eliminados em arquivos comprimidos, habilitando esta opção acima, a opção compress.

Abaixo as opções que pode ser utilizada no logrotate.conf.

  • -compress – comprimir os logs.
  • -compresscmd – comprimir os logs com especificação do comando a utilizar. O padrão é gzip.
  • -uncompresscmd – definir o comando para descomprimir os logs. O padrão é gunzip.
  • -compressext – especifica a extensão usada para o arquivo de log comprimido.
  • -compressoptions – para possibilitar incluir opções aos comandos de compressão. Por exemplo: gzip -5. O padrão é a compressão máxima (-9).
  • -copy – copia o log sem modificar o original.
  • -copytruncate – copia o log e move o original para outro lugar.
  • -create [mode owner group] – Este é o comando usado para a criação de um novo arquivo de log vazio após a rotação. Você pode alterar as permissões, o dono do arquivo e o grupo.
  • -daily – rotacionar diariamente.
  • -delaycompres – Atrasa a compressão do log para a próxima rotação.
  • -extension [ext] – Inclui uma extensão para o arquivo de log. Se a compressão usada for a padrão a extensão será .gz.
  • -ifempty – Rotaciona os logs mesmo quando vazios.
  • -include [file or directory] – Indica outros arquivos de configuração ou diretórios que tenham arquivos de configuração para o logrotate.
  • -mail – envia um email com logs extintos.
  • -mailfirst – envia um email com os logs rotacionados.
  • -maillast – envia um email com os logs que serão rotacionados, os logs originais.
  • -missingok – não enviar mensagem de erro no caso de um arquivo de log não existir.
  • -monthly – rotaciona os logs mensalmente.
  • -nocompress/nocopy/nocopytruncate/nocreate/nodelaycompress/nomail – negativas aos comandos correspondentes.
  • -nomissingok/noolddir/nosharedscripts/notifempty – negativas aos comandos correspondentes.
  • -olddir [directory] – guardar as versões rotacionadas em outro diretório.
  • -postrotate/endscript – comandos a serem executados após a rotação do log.
  • -prerotate/endscript – comandos a serem executados antes da rotação do log, caso o log seja rotacionado.
  • -firstaction/endscript – comandos a serem executados imediatamente antes dos prerotates comandos.
  • -lastaction/endscript – comandos a serem executados depois daqueles invocados através do -postrotate.
  • -rotate – comando para rotacionar os logs.
  • -size – rotacionar os logs quando ultrapassarem o tamanho indicado.
  • -sharedscripts – postrotate e prerotate serão executados para cada log que tenha a mesma identificação. Este comando faz com que sejam executados apenas uma vez.
  • -start – inclui um número para a base dos logs rotacionados, por exemplo: start 0 – log.0.
  • -tabooext [+] list – mudar a lista de extensões taboo.
  • -weekly – rotacionar semanalmente.
Exemplo de um arquivo padrão do logrotate.conf
1
    #### Estas opções afetam globalmente o funcionamento do logrotate
    # roda os arquivos de log semanalmente
 weekly

    # mantém as últimas 4 cópias de logs anteriores
 rotate 4

    # Erros de não existência dos logs são enviados para o usuário root
 mail root

    # Cria novos arquivos de log (vazios) após rodar os antigos
 create

   # Descomente isso se desejar seus arquivos de logs compactados. O parâmetro
    # delaycompress é usado para que o primeiro log rodado seja mantido
    # descompactado
 compress
 delaycompress

    # Executam os scripts em prerotate e postrotate a cada vez que os logs
    # forem rodados.
 nosharedscripts

   # Definimos um diretório que poderá conter definições individuais para
    # diversos serviços no sistema, eles podem ir neste arquivo mas
    # diversas configurações individuais podem deixar a interpretação
    # deste arquivo confusa.

 include /etc/logrotate.d

   # Define opções específicas para a rotação mensal de /var/log/wtmp, o novo arquivo
    # de log somente será rodados caso tenha mais de 5MB (size 5M), será criado
    # com a permissão 0664 e pertencerá ao usuário root grupo utmp
    # (create 0664 root utmp) e será mantida somente uma cópia do log anterior.
    # (rotate 1)
 /var/log/wtmp {
     monthly
     create 0664 root utmp
     size 5M
     rotate 1
 }
   
    # Define opções específicas para a rotação mensal de /var/log/btmp, se o arquivo
    # não existir não será necessário gerar alertas (missinkok) que serão enviados
    # ao administrador. O novo arquivo criado deverá ter a permissão 0664 com o
    # dono root e grupo utmp (create 0664 root utmp) e será
    # mantida somente uma cópia do log anterior.
 /var/log/btmp {
     missingok
     monthly
     create 0664 root utmp
     rotate 1
 }

   # Define opções específicas para a rotação mensal de /var/log/lastlog, o novo
    # arquivo será criado com a permissão 0664 com o dono root e grupo
    # utmp e será mantida somente uma cópia do arquivo de log anterior
    # (rotate 1).
 /var/log/lastlog {
     missingok
     monthly
     create 0664 root utmp
     rotate 1
 }
   
    # Define opções específicas para a rotação diária de /var/log/messages, o
    # arquivo será rodado se atingir o tamanho de 1Mb, então o
    # novo arquivo será criado com as mesmas permissões do arquivo anterior.
    # O comando killall -1 syslogd será executado após a rotação
    # para que o daemon syslogd funcione corretamente mas somente uma vez
    # durante a rotação de vários arquivos de logs (sharedscripts).
    # Serão mantidas as 10 últimas cópias do arquivo /var/log/messages
    # compactadas (o parâmetro compress foi especificado na seção global deste
    # arquivo de configuração).
 /var/log/messages {
     daily
     size 1M
     sharedscripts
     postrotate
       /sbin/killall -1 syslogd
     endscript
     rotate 10
 }
   
    # Define opções específicas para a rotação mensal dos arquivos em /var/log/mirror/*,
    # a falta desses arquivos não precisa ser notificada ao administrador (missingok),
    # mesmo assim o parâmetro "nomail" evitará isto de qualquer forma. Os logs
    # rodados não serão compactados (nocompress) e serão mantidas as últimas 7 cópias
    # dos logs.
 /var/log/mirror/* {
    montly
    nomail
    missingok
    nocompress
    rotate 7
 }

    # logs específicos do sistema podem ser configurados aqui. As opções padrões e
    # definidas na seção global deste arquivo serão usadas para processar os
    # arquivos de logs restantes.


2 comentários sobre “Rotação dos logs

Os comentários estão desativados.