Linux + como compactar os arquivos de log antigos automaticamente

6

Sob a pasta /var/log/httpd , os arquivos são criados com grande capacidade !!!

Qual solução posso usar para compactar os arquivos antigos automaticamente (pode logrotate lidar com isso)?

Se sim, como configurar a máquina Linux para comprimir os arquivos antigos nesta pasta?

Segunda pergunta: qual o significado desses arquivos?

  13:16:50 root@BillGates-Machine:/var/log/httpd # ls -ltr
  -rw-r--r-- 1 root root      7612 Jan 30 05:51 ssl_error_log-20160131
  -rw-r--r-- 1 root root  16170199 Jan 31 03:29 ssl_request_log-20160131
  -rw-r--r-- 1 root root  14677353 Jan 31 03:29 ssl_access_log-20160131
  -rw-r--r-- 1 root root 425621646 Jan 31 03:38 access_log-20160131
  -rw-r--r-- 1 root root     77267 Jan 31 03:38 error_log-20160131
  -rw-r--r-- 1 root root     11233 Feb  7 03:43 ssl_error_log-20160207
  -rw-r--r-- 1 root root  16398688 Feb  7 03:44 ssl_request_log-20160207
  -rw-r--r-- 1 root root  14867381 Feb  7 03:44 ssl_access_log-20160207
  -rw-r--r-- 1 root root 471057664 Feb  7 03:48 access_log-20160207
  -rw-r--r-- 1 root root    101611 Feb  7 03:48 error_log-20160207
    
por yael 24.02.2016 / 14:26

3 respostas

10

logrotate pode compactar os arquivos que roda, mas não funciona bem quando o nome do arquivo de log que o aplicativo grava não é estático (como é o caso aqui, devido ao sufixo de data no nome do arquivo). Se você reconfigurou o servidor HTTP (Apache?) Para que não incluísse o sufixo de data (por exemplo, escreveria apenas access_log , error_log etc) logrotate poderia ser usado. Veja um exemplo de como configurá-lo assim.

Aqui está outra questão relacionada que também tem uma solução caso você deseje manter o esquema de nomenclatura do arquivo de log. Não usa logrotate, mas um script personalizado para o trabalho.

O significado desses arquivos, em suma, é

  • access_log: solicitações HTTP simples que tiveram êxito
  • error_log: solicitações HTTP simples que resultam em um erro
  • ssl_request_log: solicitações HTTPS que são bem-sucedidas
  • ssl_error_log: solicitações HTTPS que resultam em um erro

(é claro que sua configuração pode desviar dessa lógica)

    
por 24.02.2016 / 14:39
4

Você pode usar o logrotate.

Uma configuração de aplicativo de exemplo seria o dpkg (sistema de gerenciamento de pacotes Debian), que é armazenado em /etc/logrotate.d/dpkg . Uma das entradas nesse arquivo seria:

/var/log/dpkg.log {
      monthly
      size 500M
      rotate 12
      compress
      delaycompress
      missingok
      notifempty
      create 644 root root
}

Tutorial aqui .

    
por 10.01.2017 / 13:35
0

Adicione operação de compactação ao cron. Adicione a seguinte linha ao root crontab ( sudo crontab -e ):

0 0 * * * tar -czf /var/log/httpd_backup_'date'.tar.gz /var/log/httpd && rm -rf /var/log/httpd/*

Este comando irá criar um arquivo tar com seus logs antigos e remover o arquivo existente. O trabalho começará às 0 horas todos os dias.

    
por 24.03.2016 / 18:20