:::: MENU ::::

sexta-feira, 13 de maio de 2011

Quem trabalha em um ambiente que possui uma equipe de desenvolvimento, por exemplo, desenvolvedores Java, sabe(ou deve imaginar) que o servidor que é utilizado no ambiente de desenvolvimento vai ter um tal de log que vai crescer nervosamente... Ah se vai...


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.9

E 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/

Um comentário:

Só não vale xingar a mãe ou puxar cabelo nos comentários =)

Posts populares