Como configurar o logrotate para arquivamento automático de logs e economia de espaço em disco
Gerenciar logs é uma parte crucial do trabalho de qualquer administrador de servidor. Logs que não são rotacionados podem rapidamente ocupar todo o espaço em disco disponível, desacelerar o servidor e causar erros imprevisíveis. Neste artigo, explicaremos como configurar e usar o logrotate para limpeza e rotação automática de logs em um servidor.
O que é logrotate e por que é importante usá-lo?
O logrotate é uma ferramenta projetada para o gerenciamento automático de logs. Ele ajuda a:
- Limpar logs antigos — exclui ou arquiva automaticamente arquivos de log antigos.
- Economizar espaço em disco — comprime e remove logs desnecessários.
A rotação de logs impede que os logs se acumulem e causem transbordamento do disco, o que poderia resultar em falhas e perda de dados. O logrotate arquiva automaticamente logs antigos e libera espaço para novos dados.
Como funciona o logrotate?
Quando o logrotate está ativo, ele executa automaticamente os seguintes passos:
- Rotação de logs — logs antigos são renomeados e armazenados, enquanto novos arquivos são criados em seus lugares.
- Compressão — logs antigos podem ser comprimidos para o formato .gz para economizar espaço.
- Exclusão — logs desatualizados podem ser excluídos se não forem mais necessários.
Exemplo: Um arquivo de log chamado access.log pode ser transformado em access.log.1, depois comprimido em access.log.1.gz, e eventualmente excluído após um período de retenção especificado.
---
Como configurar o logrotate
1. Instalando o logrotate
Na maioria dos sistemas Linux, o logrotate já vem pré-instalado. Para verificar se o logrotate está instalado, execute o comando:
sudo logrotate --version
Se o logrotate não estiver instalado, é possível instalá-lo através de um gerenciador de pacotes.
- Para Debian/Ubuntu:
sudo apt update && sudo apt install logrotate
- Para CentOS/RockyLinux/AlmaLinux:
sudo yum install logrotate
2. Configurando o logrotate
A configuração do logrotate geralmente é armazenada em /etc/logrotate.conf. Este arquivo contém parâmetros gerais para todos os logs no servidor. Para configurar a rotação de logs individuais, você pode criar arquivos de configuração separados para diferentes serviços no diretório /etc/logrotate.d/.
Exemplo de uma configuração padrão do Nginx:
/var/log/nginx/*.log {
daily # Logs são rotacionados diariamente
missingok # Não exibe erro se o log estiver ausente
rotate 7 # Mantém 7 arquivos arquivados
compress # Comprime logs antigos
delaycompress # Atrasa a compressão até a próxima rotação
notifempty # Não rotaciona arquivos vazios
create 0640 www-data adm # Cria novos logs com permissões específicas
}
3. Parâmetros chave de configuração
- daily/weekly/monthly — define com que frequência o arquivo de log será rotacionado (diariamente, semanalmente ou mensalmente).
- rotate [N] — especifica o número de logs arquivados a serem retidos.
- compress — habilita a compressão do arquivo de log (geralmente em .gz).
- missingok — evita erros se um arquivo de log estiver ausente.
- notifempty — ignora a rotação de arquivos vazios.
- create — cria novos logs com as permissões especificadas.
4. Executando o logrotate
O logrotate geralmente é executado automaticamente via cron. No entanto, você pode executá-lo manualmente se precisar verificar a configuração ou realizar uma rotação imediatamente:
sudo logrotate -f /etc/logrotate.conf
5. Verificando a operação do logrotate
Para garantir que o logrotate esteja funcionando corretamente, você pode verificar as entradas mais recentes em seu log de serviço:
sudo journalctl -u logrotate -n 10