Logrotate é um utilitário concebido para administradores que gerem servidores que produzem um grande volume de ficheiros de registo para os ajudar a poupar algum espaço em disco, bem como para evitar um risco potencial de tornar um sistema não responsivo devido à falta de espaço em disco. Normalmente, uma solução para evitar este tipo de problema é configurar uma partição separada ou volume lógico para um ponto de montagem /var. Contudo, o logrotate também pode ser uma solução viável para este problema, especialmente se for demasiado tarde para mover todos os logs sob partição diferente. Neste artigo falaremos sobre a utilização e configuração do logrotate no servidor RedHat / CentOS Linux.
O que é Logrotate
Logrotate permite a um administrador de sistema rodar e arquivar sistematicamente quaisquer ficheiros de log produzidos pelo sistema, reduzindo assim a necessidade de espaço em disco de um sistema operativo. Por defeito, o Logrotate é invocado uma vez por dia utilizando um cron scheduler de localização /etc/cron.daily/
# ls /etc/cron.daily/
cups logrotate makewhatis.cron mlocate.cron prelink readahead.cron rhsmd tmpwatch
Configurando o Logrotate
A configuração do Logrotate é feita editando dois ficheiros de configuração separados:
- /etc/logrotate.conf
- ficheiros de configuração específicos do serviço armazenados em /etc/logrotate.d/.
O ficheiro principal logrotate.conf contém uma configuração genérica. Aqui está um ficheiro de configuração padrão logrotate logrotate.conf:
1 weekly 2 rotate 4 3 create 4 dateext 5 include /etc/logrotate.d 6 /var/log/wtmp { 7 monthly 8 create 0664 root utmp 9 minsize 1M 10 rotate 1 11 }
- Linha 1 – opção de configuração semanal assegura uma rotação semanal de todos os ficheiros log definidos no ficheiro de configuração principal e no directório /etc/logrotate.d/.
- Linha 5 – inclui todas as outras configurações do directório /etc/logrotate.d
- Linha 6 – 11 contém uma configuração de rotação de serviço específico de log
Linha 2 – rotação 4 assegura que logrotate mantém uma cópia de segurança de 4 semanas de todos os ficheiros de logLinha 3 – criar opção instrui logrotate a criar novos ficheiros de log vazios após cada rotaçãoLinha 4 – dataextra acrescenta uma extensão a todos os ficheiros de log rodados sob a forma de data em que cada ficheiro de log em particular foi processado por logrotate
As opposed to logrotate.conf a directory /etc/logrotate.d/ contém um ficheiro de configuração de serviço específico utilizado por logrotate. Na secção seguinte iremos criar um exemplo de configuração de logrotate.
Subscrever a RSS e NEWSLETTER e receber as últimas notícias Linux, empregos, conselhos de carreira e tutoriais.
Incluindo novos registos de serviço para logrotate
Nesta secção iremos adicionar um novo ficheiro de registo numa configuração de logrotate. Digamos que temos um ficheiro de log chamado:
/var/log/linuxcareer.log
sitting no nosso directório /var/log que precisa de ser rodado diariamente. Primeiro precisamos de criar um novo ficheiro de configuração logrotate para acomodar para o nosso novo ficheiro log:
$ vi /etc/logrotate.d/linuxcareer
Inserir um texto seguinte em /etc/logrotate.d/linuxcareer:
/var/log/linuxcareer.log {
missingok
notifempty
compress
size 20k
daily
create 0600 root root
}
Aqui está uma explicação linha a linha do ficheiro de configuração de logrotate acima mencionado:
TIP: Se desejar incluir vários ficheiros de log num único ficheiro de configuração utilize um wildcard. Por exemplo /var/log/mylogs/*.log instruirá o logrotate para rodar todos os ficheiros de log localizados em /var/log/mylogs/ com extensão .log.
- missingok – não emitir erro se o ficheiro log estiver em falta
- notifempty – não rodar ficheiro log se estiver vazio
- compress – versões antigas de ficheiros log são comprimidas com gzip(1) por defeito
- tamanho – O ficheiro de log só é rodado se crescer mais de 20k
- diariamente – assegura a rotação diária
- criar – cria um novo ficheiro de log com permissões 600 onde o proprietário e o grupo é utilizador root
O utilitário logrotate é tão versátil quanto fornece muitas mais opções de configuração. Abaixo, vou listar algumas outras opções de configuração para rotação de log. Para obter uma lista completa, consulte a página do manual do logrotate:
$ man logrotate
- copy – Faça uma cópia do ficheiro de log, mas não altere o original em absoluto.
- mail <email@address> – Quando um log é rodado fora de existência, é enviado por correio para endereço.
- olddir <directório> – Os registos são movidos para <directório> para rotação.
- postrotate/endscript – As linhas entre postrotate e endcript são executadas após o ficheiro de log ser rodado.
Testar uma nova configuração de Logrotate
Após ter criado um novo ficheiro de configuração de Logrotate dentro de /etc/logrotate.d:
c>criar algum ficheiro de log de amostra ( se não existir ! ):
# echo "rotate my log file" > /var/log/linuxcareer.log
Após o seu ficheiro de log está no lugar forçar o logrotate a rodar todos os logs com -f option.
# logrotate -f /etc/logrotate.conf
Aviso: O comando acima irá rodar todos os seus registos definidos em /etc/logrotate.d directório.
P>Agora visite novamente o seu /var/log/directório e confirme que o seu ficheiro de registo foi rodado e foi criado um novo ficheiro de registo:
Como pode ver o novo ficheiro de registo vazio linuxcareer.log foi criado e o antigo ficheiro linuxcareer.log foi comprimido com gzip e renomeado com extensão de data.
TIP: Para ver um conteúdo do seu ficheiro de log comprimido não precisa de o descomprimir primeiro. Utilize comandos zcat ou zless que irão descomprimir o seu ficheiro de log on fly.
Conclusion
Como já foi mencionado anteriormente, a melhor maneira de evitar que o seu sistema seja entupido por ficheiros log é criar uma partição/volume lógico separado para o seu directório /var/ ou ainda melhor /var/log. Contudo, mesmo assim, o logrotate pode ajudá-lo a poupar algum espaço em disco ao comprimir os seus ficheiros de log. O logrotate pode também ajudá-lo a arquivar os seus ficheiros de log para uma referência futura, criando uma cópia extra ou enviando-lhe por e-mail quaisquer ficheiros de log recentemente rodados. Para mais informações ver a página do manual do logrotate:
$ man logrotate