Os arquivos access.log do Apache ocupam muito espaço

1

Por isso, mudei todos os meus sites para o serviço EC2 da Amazon alguns meses atrás e notei hoje que minha capacidade de disco é de > 90%. Fiz um pouco de escavação e parece que a maioria está sendo usada por arquivos access.log criados pelo apache.

Eu estou querendo saber qual é o melhor método para lidar com isso. Minha reação idiota é escrever um pequeno script que roda diariamente [ou semanalmente, mensalmente, qualquer que seja] que vai zipar todos eles e colocá-los em outro lugar caso eu precise deles no futuro - provavelmente o S3 da Amazon.

Esse é o melhor método para isso ou existe uma prática padrão que os outros estão usando e que eu deveria seguir?

EDIT: Para responder a um comentador, este servidor está atualmente executando o Linux - Ubuntu para ser preciso

    
por Andrew G. Johnson 13.07.2012 / 09:55

2 respostas

4

Use o utilitário logrotate para girar seus registros. Você pode usar a opção postrotate para executar um comando para desviá-los para o S3 algo como

/usr/bin/s3cmd put /var/log/apache2/access.log.1 s3://your.s3.host/access.log.1  

faria o truque. Você provavelmente desejará usar a opção datext para que seus arquivos tenham a data, por exemplo, access.log-20120713 para que seu script postrotate se torne um pouco mais complicado

/usr/bin/s3cmd put /var/log/apache2/access.log-$(date "+%Y%m%d") s3://your.s3.host/access.log-$(date "+%Y%m%d")

Se você usa a opção compress (recomendado), seu postrotate se torna

/usr/bin/s3cmd put /var/log/apache2/access.log-$(date "+%Y%m%d").gz s3://your.s3.host/access.log-$(date "+%Y%m%d"),gz
    
por 13.07.2012 / 10:23
1

A primeira coisa que você deve considerar é a compactação. Devido à maneira como os logs do Apache são formatados, eles são muito bem compactados.

Como Iain sugeriu, logrotate é seu amigo. Ele pode cuidar da compactação e também permite que você especifique por quanto tempo deseja manter seus registros.

Se você insistir em manter todos os registros, poderá configurar o logrotate para enviar por e-mail logs antigos ou configurar um script secundário com o cron para armazenar os logs antigos no S3 ou em outro lugar.

Aqui está um bom recurso para você começar a usar o logrotate se você nunca o usou antes.

    
por 13.07.2012 / 10:23