Cегодня я хотел бы рассказать о ротации лог-файлов для веб-сервера Apache, либо любой другой службы которая создает логи и которые необходимо ротировать.
Начну с настройки на Линуксе, а именно на ОС Slackware (в RedHat и CentOS аналогично). Ротацию логов я буду осуществлять с помощью logrotate, конфигурационный файл которого расположен в:
# /etc/logrotate.confИтак открываем файл logrotate.conf любым редактором и вставляем следующие строки:
/var/log/apache/error_log (полный путь для лог-файла)(в CentOS это /var/log/httpd/error_log){rotate 5 (кол-во хранимых сжатых фрагментов)size=10M (максимальный размер несжатого файла (в мегабайтах).Пока размер текущего файла журнала не превысит данный порог,файл не будет "ротирован")missingok (отсутствие файла не является ошибкой)nocopytruncate (не сбрасывать файл журнала после копирования)nocreate (не создавать пустой журнал)nodelaycompress (не откладывать сжатие файла на следующий цикл)nomail (не отправлять содержимое удаляемых журналов по почте)notifempty (не обрабатывать пустые файлы)noolddir (держать все файлы в одном и том же каталоге)compress (сжимать ротируемые фыйлы)postrotate/usr/bin/killall -HUP httpdendscript (между postrotate и endscript расположены командыинтерпретатора исполняемые непосредственно после ротации.В данном случае сюда помещена команда killall,перезапускающая httpd-сервер.Это необходимо для нормальной процедуры ротации лог-файлов)}/var/log/apache/access_log (полный путь для лог-файла)(в CentOS это /var/log/httpd/access_log){rotate 4weekly (производить ротацию регулярно, раз в неделю)missingoknocopytruncatenocreatenodelaycompress nomailnotifemptynoolddircompresspostrotate/usr/bin/killall -HUP httpdendscript}Как вы можете видеть в блоке где происходит ротация error_log, момент ротации наступает по достижению размера в 5 Мегабайт. Напротив, в блоке access_log ротация будет происходить раз в неделю, либо если раз в месяц (вместо weekly, ставим – monthly).
Ротация файлов может происходить как вручную с помощью команды:
# /usr/sbin/logrotate –s /var/log/logrotate.state /etc/logrotate.confЛибо с помощью планировщика заданий Cron:
На этом все, но продолжение как всегда следует…
* 22 * * * /usr/sbin/logrotate –s /var/log/logrotate.state /etc/logrotate.confНа этом все, но продолжение как всегда следует…
PS
Для ротации файла maillog, вместо /usr/bin/killall -HUP httpd – пишем
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
itpad.ru
No comments:
Post a Comment