Logrotate
Autor: Pedro Viana | Publicado: 2016-02-07T18:02:00-02:00


Logs são extremamente importantes para o correto funcionamento de um sistema, pois estão ali as informações necessárias para corrigir um problema ou para entender porque ocorreu uma determinada falha. Agora logs também possuem seus defeitos, afinal eles podem ser o responsáveis por encher uma partição raiz sem que você perceba, deixando assim o ambiente extramente lento e algumas vezes inutilizável causando os mais diversos problemas.



Uma excelente opção de gerencia disso é o tradicional LogRotate. Com ele você indica o período de rotação do arquivo de log, pode determinar ainda o apagamento e se for o caso compressão, alias extensão da compressão também é possível configurar.


Arquivo de configuração do log rotate é: /etc/logrotate.conf, o que devemos fazer é indicar o arquivo a ser monitorado e quais as métricas por ex: 

/var/log/messages {

&nbsp;&nbsp; rotate 5

&nbsp;&nbsp; weekly&nbsp;

&nbsp;&nbsp; postrotate

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /sbin/killall -HUP syslogd&nbsp;

&nbsp;&nbsp; endscript

}

Acima temos o arquivo messages (ou syslog em algumas distribuições) como base, em seguida está definido que haverá uma rotação de 5 arquivos ( messages.1, messages.2, messages.3...) que ocorrerá semanalmente e por fim toda vez que houver uma rotação o comando killall será executado.





Lembrando que existem diversas opções para utilizarmos no LogRotate. Se me permite um "copy / translate / paste" da documentação.

compress - Opção utilizada para comprimir os logs. 
compresscmd - Comprimir os logs de outra forma. O padrão é gzip. 
uncompresscmd - Opção utilizada para definir o comando para descomprimir os logs. O padrão é gunzip.
compressext - Especifica a extensão usada para o arquivo de log comprimido, caso a compressão esteja habilitada. 
compressoptions - Opção possibilita incluir parâmetros 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. O inverso pode ser definido através da opção: notifempty
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/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 do postrotate. 
rotate - Indicativo sobre a quantidade de rotações que o log vai ter. 
size - Rotacionar os logs quando ultrapassarem o tamanho indicado. 
start - Inclui um número para a base dos logs rotacionados, por exemplo: start 0 - log.0. 
weekly - Rotacionar semanalmente.