Назад | Перейти на главную страницу

Файлы Apache access.log занимают слишком много места

Так что несколько месяцев назад я переключил все свои сайты на сервис Amazon EC2 и сегодня заметил, что емкость моего диска превышает 90%. Немного покопался, и кажется, что большая часть из них используется файлами access.log, созданными apache.

Мне интересно, как лучше всего с этим справиться. Моя реакция коленного рефлекса - написать небольшой скрипт, который запускается ежедневно [или еженедельно, ежемесячно, что угодно], который заархивирует их все и поместит в другое место, если они мне понадобятся в будущем - скорее всего, S3 Amazon.

Это лучший метод для этого или есть стандартная практика, которую используют другие, которой я должен следовать?

РЕДАКТИРОВАТЬ: Чтобы ответить комментатору, этот сервер в настоящее время работает под управлением Linux - точнее, Ubuntu

Использовать logrotate утилита для поворота ваших журналов. Вы можете использовать postrotate возможность запустить команду, чтобы перенаправить их на S3, что-то вроде

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

было бы на уловку. Вы, вероятно, захотите использовать datext вариант, чтобы ваши файлы были датированы, например access.log-20120713 так что ваш сценарий postrotate становится немного сложнее

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

Если вы используете compress вариант (рекомендуется) ваш постротация становится

/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

Первое, что следует учитывать, - это сжатие. Из-за способа форматирования журналов Apache они действительно хорошо сжимаются.

Как и предположил Иэн, logrotate - ваш друг. Он может позаботиться о сжатии, а также позволит вам указать, как долго вы хотите хранить ваши журналы.

Если вы настаиваете на хранении всех журналов, вы можете настроить logrotate для отправки старых журналов по почте или настроить дополнительный сценарий с cron для хранения старых журналов на S3 или в другом месте.

Вот хороший ресурс чтобы вы начали использовать logrotate, если вы никогда не использовали его раньше.