Главная » 2013 Август 16 » FREEBSD. Автоматическая архивация (ротация) log-файлов с помощью logrotate
10:54 FREEBSD. Автоматическая архивация (ротация) log-файлов с помощью logrotate | |
Автоматическая архивация (ротация) log-файлов с помощью logrotate У наших пользователей есть возможность архивировать файлы журналов web-сервера (access.log, errors.log, либо других) с помощью модифицированной утилиты logrotate(8). Этот процесс обычно называется "ротация логов". Ротация логов служит для контроля размера дискового пространства, занимаемого журналами. Утилиту logrotate, которая это делает, обычно запускают с помошью планировщика заданий crond. В результате работы logrotate остается один активный файл журнала (в который "сейчас" происходит запись со стороны сервера) и несколько архивных файлов, сжатых специальным упаковщиком. Обычно это выглядит так: access.log, access.log.1.lzo, access.log.2.lzo, ... access.log.10.lzo Здесь access.log - текущий, access.log.1.lzo - самый новый архив, access.log.10.lzo - самый старый архив. Утилита logrotate находится в каталоге /opt/sbin/logrotate. Для ее работы необходим специальный файл настроек. В нем перечисляются файлы журналов, которые необходимо архивировать, и все ассоциированные с ними параметры. Далее приведен пример файла настроек (etc/logrotate.conf). "/home/<user-www>/logs/access.log" { rotate 10 # кол-во хранимых сжатых фрагментов size=16M # максимальный размер несжатого файла; пока размер текущего # файла журнала не превысит данный порог, файл не будет "ротирован" missingok # отсутствие файла не является ошибкой nocopytruncate # не сбрасывать файл журнала после копирования nocreate # не создавать пустой журнал nodelaycompress # не откладывать сжатие файла на следующий цикл nomail # не отправлять содержимое удаляемых (старых) журналов по почте notifempty # не обрабатывать пустые файлы noolddir # держать все файлы в одном и том же каталоге compress # сжимать postrotate /usr/bin/killall -HUP httpd endscript # Между postrotate и endscript расположены команды # интерпретатора sh(1), исполняемые непосредственно после ротации. # В данном примере сюда помещена команда kill, перезапускающая # httpd-сервер. Это необходимо для нормальной процедуры } "/home/<user-www>/logs/errors.log" { rotate 4 # кол-во хранимых сжатых фрагментов weekly # игнорировать размер файла; производить ротацию регулярно, раз в неделю missingok nocopytruncate nocreate nodelaycompress nomail notifempty noolddir compress postrotate /usr/bin/killall -HUP httpd endscript } Как можно увидеть из примеров, существует два подхода: обычная (регулярная) ротация и ротация по достижению предельного размера файла. access.log Для журнала access.log в примере выбран второй подход, по достижению файлом размера 16 мегабайт. Если утилита обнаруживает данный факт, ротация происходит. Всего система хранит 10 архивных фрагментов. Самый старый удаляется. errors.log Журнал диагностики errors.log ротируется регулярно, раз в неделю. Система хранит 4 архивных фрагмента (за месяц), самый старый удаляется. Полное описание формата файла можно просмотреть по этой команде: $ man 8 logrotate | |
|
Всего комментариев: 2 | |
| |