No meu caso, tem um tal de Tomcat que consegue deixar o seu catalina.out com 1GB em 4 dias. Pra quem não entendeu, é o seguinte:
Um arquivo todo em ASCII com mais de 1GB
A primeira vez que eu vi, dei(lá ele) uns 30 puta-que-pariu e fui ver com os developers de lá, e de fato, a disgrama gera um log fil'daputa...
Mas enfim, para qualquer aplicação/serviço que gere log ou qualquer tipo de saída de texto, é possível controlar usando o logrotate.
WTF is logrotate?
Então padawans, o utilitário logrotate é projetado para simplificar a administração dos arquivos de log em um sistema que gera um monte de arquivos de log. O logrotate permite a rotação, compressão, remoção e envio de arquivos de log. O logrotate pode ser configurado para manipular um arquivo de log diariamente, semanalmente, mensalmente ou quando o arquivo de log atingir um determinado tamanho.[1]
Atualmente sua versão é a 3.7.9E ai, Como eu configuro?
Vamos lá!Primeiramente, conheça os arquivos:
/etc/logrotate.conf: É o principal. Aqui serão definidos os parâmetros principais do logrotate
/etc/logrotate.d/: Aqui colocamos os arquivos com as configurações específicas para os arquivos engraçadinhos. Tudo que estiver aqui, será interpretado.
Lista de opções do logrotate[2]:
- 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.
logrotate.conf
# see "man logrotate" for details
# rotacione o log semanalmente
weekly
# keep 4 weeks worth of backlogs
## Mantenha os logs por 4 semanas
rotate 4
# create new (empty) log files after rotating old ones
## Crie um novo arquivo de log depois de rotacionar-los
create
# uncomment this if you want your log files compressed
## Descomente se quiser compactar o arquivo de log
#compress
# RPM packages drop log rotation information into this directory
## Esse eh o diretorio onde vamos adicionar nossos logrotate
include /etc/logrotate.d
# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
monthly
minsize 1M
create 0664 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
Case: Tomcat
Dentro do diretório /etc/logrotate.d/, crie um arquivo, pode ser qualquer nome, por exemplo, apache-tomcat.vim /etc/logrotate.d/apache-tomcat
/opt/apache/apache-tomcat/logs/* {
daily
missingok
rotate 5
size 2M
}
E traduzindo:
Aos arquivos de dentro do diretório /opt/apache/apache-tomcat/logs/, o logrotate rotacionará diariamente, mantendo por 5 semanas os arquivos. O tamanho máximo que cada arquivo irá alcançar será 2MB.
Logs crescem infinitamente e precisam de atenção. Usem a criatividade (e a lógica!) e gerencie seus logs!
Referências:
http://www.thegeekstuff.com/2010/07/logrotate-examples/
Muito bom o artigo!!
ResponderExcluir