Gerenciamento de Logs no Linux com logrotate

Funcionalidades Essenciais e Mecanismo de Operação

1. Capacidades Principais
Rotacionamento de logs: automaticamente renomeia o arquivo de log atual para arquivamento e cria um novo arquivo vazio para escrita contínua.
Compressão para armazenamento: utiliza algoritmos como gzip para reduzir o espaço em disco ocupado pelos logs arquivados.
Limpeza por expiração: exclui automaticamente logs antigos com base no período de retenção definido na configuração.

2. Mecanismo de Trabalho


Rastreamento de estado: registra a última execução de cada configuração em /var/lib/logrotate/status para evitar rotações repetidas.
Verificação de condições: avalia se o arquivo de log atende aos critérios de rotação (por data, tamanho ou condições personalizadas).

Fluxo de execução:
  O arquivo de log atual (por exemplo, app.log) é renomeado para app.log.1.
  Se necessário, o .1 é movido para .2, e assim por diante.
  Arquivos que excedem o número máximo de rotação são removidos.
  Um novo arquivo de log vazio é criado.
  Comandos definidos em postrotate são executados para notificar serviços sobre a reabertura do log.

Estrutura de Configuração e Parâmetros Comuns

Organização da Configuração

Arquivo principal: /etc/logrotaet.conf (define parâmetros globais).
Diretório de configurações: /etc/logrotate.d/ (contém arquivos de configuração independentes por serviço).
Modularidade: permite criar configurações dedicadas para diferentes aplicações, facilitando a manutenção.

Parâmetros de Configuração Frequentes


Ciclos de rotação:
  daily: rotação diária.
  weekly: rotação semanal (aos domingos).
  monthly: rotação mensal (no primeiro dia).
  yearly: rotação anual (no primeiro dia do ano).
  size: aciona a rotação quando o arquivo atinge um tamanho específico (ex.: size 100M).

Política de retenção:
  rotate N: mantém os N logs mais recentes (ex.: rotate 7 mantém 7 cópias).
  dateext: utiliza a data como sufixo no nome do arquivo rotado (ex.: app.log-20250424).
  dateformat .%Y%m%d%s: formata o sufixo com data e timestamp (ano-mês-dia-segundos).

Opções de compressão:
  compress: ativa a compressão (usa gzip por padrão).
  delaycompress: adia a compressão para evitar comprimir logs em escrita ativa.

Outros parâmetros chave:
  missingok: ignora erros se o arquivo de log não existir.
  notifempty: não realiza rotação se o log estiver vazio.
  create 640 usuario grupo: cria um novo log com permissões e donos especificados.
  sharedscripts: executa o script de postrotate apenas uma vez após todos os logs serem processados; o script é finalizado com endscript.

Exemplo de Configuração Prática

Crie um arquivo em /etc/logrotate.d/ com a seguinte estrutura adaptada para um serviço web:


/var/log/apache2/*.log {
  weekly
  keep 12
  compress
  delaycompress
  missingok
  notifempty
  create 0640 www-data www-data
  sharedscripts
  postrotate
    if [ -f /var/run/apache2/apache2.pid ]; then
      kill -USR1 $(cat /var/run/apache2/apache2.pid)
    fi
  endscript
}

Este comando envia o sinal USR1 para o Apache, permitindo que ele reabra os arquivos de log sem reiniciar o serviço, garantindo a continuidade da gravação.

Cenários de Aplicação e Importância

Problemas Resolvidos
Gerenciamento de espaço em disco: evita que logs cresçam indefinidamente, consumindo recursos de armazenamento.
Eficiência na análise de logs: facilita a segmentação de logs por períodos, auxiliando na depuração de problemas específicos.
Otimização de desempenho: reduz o impacto de arquivos de log muito grandes no desempenho do sistema.
Prevenção de falhas: previne interrupções de serviço causadas por disco cheio devido a logs acumulados.

Aplicações Típicas
Servidores web: gerencia logs de acesso e erro do Nginx, Apache, etc.
Bancos de dados: administra logs de erro do MySQL, PostgreSQL e outros sistemas de banco de dados.
Aplicações customizadas: controla a saída de logs de software desenvolvido internamente.
Logs do sistema: processa arquivos como /var/log/messages e /var/log/syslog.

Comandos Operacionais Essenciais

Validação de configuração:


Modo de simulação: logrotate -d /etc/logrotate.d/minhaconfig
  Executa uma rotação fictícia para verificar a sintaxe e o comportamento esperado, sem alterações reais.

Execução manual:
Forçar rotação: logrotate -vf /etc/logrotate.d/minhaconfig
  -v exibe detalhes, -f força a execução mesmo que o ciclo de rotação não tenha sido atingido.

Verificação de estado:
Última execução: cat /var/lib/logrotate/status
  Exibe as datas da última rotação para cada configuração.

Recomendações de Boas Práticas

Sempre valide configurações após modificações usando o modo de simulação para evitar erros de rotação.
Defina corretamente os donos e permissões no parâmetro create, garantnido que o serviço tenha acesso ao novo log.
Ajuste a política de retenção (rotate) com base no espaço disponível e na criticidade dos logs.
Implemente monitoramento de uso de disco para alertar sobre possíveis problemas de gerenciamento de logs.
Escolha sinais apropriados para cada serviço ao notificar sobre rotação de logs, como USR1 para reabertura e HUP para recarregar configurações.


# Exemplos de sinais comuns:
sudo kill -HUP     # Recarrega configurações.
sudo kill -USR1    # Reabre arquivos de log.
sudo kill -USR2    # Atualização contínua (hot upgrade).
sudo kill -QUIT    # Encerramento gracioso.
sudo kill -TERM    # Encerramento rápido.
sudo kill -9       # Encerramento forçado (último recurso).

Tags: logrotate Linux gerenciamento de logs configuração de sistema rotação de logs

Publicado em 7-23 11:02