De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Naira Kaieski
Data de Publicação: 04 de janeiro de 2012
A ferramenta logrotate
tem como objetivo rotacionar automaticamente logs
de aplicativos segundo a necessidade e a organização que o administrador
de sistemas (SysAdmin) deseje. Todo administrador experiente reconhece
a importância dos logs e principalmente o quão relevante é ter os logs
disponíveis e organizados para um momento onde é necessária uma rápida consulta
aos mesmos. Esta ferramenta é muito útil para os SysAdmin e possui recursos
flexíveis que por vezes não são explorados. É relevante salientar que alguns
aplicativos possuem seu desempenho comprometido quando seus arquivos de log
chegam a tamanhos muito grandes.
Para instalar o logrotate
basta efetuar o procedimento padrão da distribuição
Linux que está sendo utilizada.
Gentoo
# emerge -va app-admin/logrotate
Ubuntu
# apt-get install logrotate
CentOS
# yum install logrotate
Depois de instalado é preciso efetuar a personalização da configuração do logrotate
.
O logrotate
é executado automaticamente segundo o agendamento desejado, no entanto além de permitir um ajuste mais detalhando no próprio arquivo de configuração do logrotate
a ferramenta também possui sua execução vinculada ao cron. Dessa forma ao listar o conteúdo do cron.daily devemos encontrar o script do logrotate
que foi adicionado automaticamente no momento da instalação da ferramenta.
# ls /etc/cron.daily
É esperado encontrar na lista de scripts localizadas neste diretório o logrotate
.
O logrotate
possui basicamente um arquivo de configuração geral/global:
/etc/logrotate.conf
Neste arquivo são inseridas as configurações "padrão" de rotacionamento de
logs para todos os arquivos de log que foram especificados nas confgirações do
logrotate
.
Um diretório, no qual podem ser inseridos arquivos específicos para determinados aplicativos:
/etc/logrotate.d
Neste diretório podem ser criados arquivos com configurações específicas de
rotacionamento de logs para determinados aplicativos segundo a necessidade
do administrador. Muitos aplicativos ao serem instalados, como por exemplo
o Apache, geram um arquivo de rotacionamento de logs dentro do diretório
/etc/logrotate.d
com configurações próprias mas que podem ser facilmente
personalizadas, bastando apenas editar o arquivo referente ao aplicativo.
Inicialmente vamos analisar o arquivo de configuração geral/global do
logrotate
(/etc/logrotate.conf
), conforme mencionado anteriormente a
execução do logrotate
está vinculada ao cron (agendamento) do sistema
operacional diário, no entanto é necessário personalizar o período de
rotacionamento dos logs diretamente no logrotate
.
Vamos analisar algumas opções do arquivo de configuração geral
/etc/logrotate.conf
(o conteúdo abaixo está personalizado):
# See "man logrotate" for details # período em que os arquivos de log devem ser rotacionados daily rotate 35 compress dateext size 5M copytruncate notifempty nomail noolddir # administrador ou aplicativos podem inserir # seus arquivos de configuração específicos de # rotacionamento de log neste diretório include /etc/logrotate.d # também podem ser inseridas configurações de # rotacionamento de logs diretamente neste arquivo. # para isso basta definir o nome do arquivo # de log a ser rotacionado e suas configurações # específicas que sobrescrevem as gerais definidas # anteriormente. /var/log/wtmp { monthly create 0664 root utmp rotate 1 } # é preciso especificar os arquivos a serem # rotacinados pelo logrotate /var/log/mail.info /var/log/mail.log /var/log/mail.err { rotate 31 } # outra forma de especificar os arquivos a serem # rotacionados pelo logrotate /var/log/*log { rotate 31 }
Apenas para verificarmos, na instalação do Apache no Ubuntu foi gerado o
arquivo /etc/logrotate.d/apache2
com o seguinte conteúdo:
/var/log/apache2/*.log { weekly missingok rotate 52 compress delaycompress notifempty create 640 root adm sharedscripts postrotate /etc/init.d/apache2 reload > /dev/null endscript }
Analisando algumas diretivas de configuração disponíveis no logrotate
:
Período em que os arquivos de log devem ser rotacionados
As opções para esta configuração são:
daily |
diariamente |
weekly |
semanalmente |
monthly |
mensalmente |
Diretivas de configuração
rotate 35 |
indica o número de arquivos de log rotacionados a serem mantidos, o arquivo rotacionado mais velho sempre é substituído. |
compress |
comprimir os arquivos de log rotacionados (padrão é o gzip). |
create |
imediatamente após rotacionar um arquivo de log o arquivo de log é recriado com o mesmo nome e com as permissões especificadas. Exemplo de sintaxe: create 640 root adm |
delaycompress |
comprimir o arquivo de log rotacionado apenas no próximo rotacionamento. Útil quando um aplicativo continua escrevendo um arquivo de log por um determinado tempo após o rotacionamento. Esta diretiva deve ser utilizada de forma concomitante com a diretiva compress. |
dateext |
inserir a data em que os arquivos foram rotacionado como parte do nome do arquivo de log rotacionado. Um exemplo de arquivo rotacionado gerado com a data no nome: /var/log/syslog-20111218.gz |
size 5M |
tamanho que o arquivo de log deve ter para ser rotacionado, o "M" indica megabytes, também pode ser utilizado "k" que indica kilobytes. Neste exemplo o arquivo de log só será rotacionado se tiver o tamanho mínimo de 5 megabytes. |
copytruncate |
esta opção é muito útil pois permite "limpar" o conteúdo de um arquivo de log depois que uma cópia dele é gerada para o rotacionamento, dessa forma não se perde o arquivo "original" de log. Caso o arquivo original de log seja rotacionado será preciso gerar um novo arquivo de log com as pemissões corretas para que o aplicativo possa escrever nele novamente, por vezes isso é um problema. |
notifempty |
não rotacionar o arquivo de log se ele estiver vazio. |
ifempty |
rotacionar o arquivo de log mesmo que este esteja vazio. Esta é a opção padrão. |
nomail |
não enviar o arquivo de log por e-mail. |
mail |
quando os arquivos de logs forem rotacionados com o número máximo de versões (diretiva rotate) estipulado os arquivos de log serão enviados por e-mail para o endereço definido nesta diretiva. Exemplo de sintaxe: mail <logs (a) dominio com br> |
missingok |
se o arquivo de log não existir o logrotate passa para a interpretação do próximo arquivo sem gerar mensagens de erro. |
noolddir |
manter os arquivos de log no diretório de origem, é possível mover os arquivos de log rotacionados para um outro diretório desde que no mesmo dispositivo físico. |
olddir |
diretório para onde os arquivos de log rotacionados devem ser movidos. Exemplo de sintaxe: olddir /var/log/logs_antigos |
postrotate/endscript |
os comandos definidos entre estas duas diretivas são executadas logo após o arquivo de log ser rotacionado. Este conjunto de diretivas só deve ser configurado para uma definição específica de rotacionamento de log, não pode ser configurado nas diretivas globais do logrotate . |
prerotate/endscript |
os comandos definidos entre estas duas diretivas são executadas antes o arquivo de log ser rotacionado. Este conjunto de diretivas só deve ser configurado para uma definição específica de rotacionamento de log, não pode ser configurado nas diretivas globais do logrotate . |
sharedscripts |
geralmente os scripts definidos nas diretivas postrotate e prerotate são executados para cada um dos logs rotacionados no padrão definido previamente, isso significa que um mesmo script pode ser executado várias vezes. Quando esta diretiva é especificada os script definidos nas diretivas postrotate e prerotate são executados uma única vez. No entanto, caso não haja necessidade de rotacionar os arquivos de log definidos no padrão, os scripts não serão executados. Esta diretiva requer a configuração da diretiva create . |
É possível executar manualmente o logrotate
caso se queira efetuar algum
teste inicial, por exemplo com uma configuração específica para os arquivos
de log de um determinado aplicativo.
No terminal, preferencialmente logado com o usuário root execute:
# logrotate /etc/logrotate.conf
Para forçar a execução do rotacionamento execute:
# logrotate --force /etc/logrotate.conf
Para verificar com mais detalhes o que está sendo executado pelo logrotate
vamos ativar o modo "verbose" na execução manual
# logrotate --force --verbose /etc/logrotate.conf
http://linuxcommand.org/man_pages/logrotate8.html
Naira Kaieski é Administradora de Redes e Sistemas nas Faculdades Integradas de Taquara - Faccat
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários