Logrotate - настройка ротации логов
Logrotate является отличной утилитой для управления log-файлами в системе. Утилита позволяет в автоматическом режиме архивировать, удалять и рассылать файлы на e-mail. Каждый log-файл может обрабатываться ежедневно, еженедельно, ежемесячно или по достижению выставленного объёма. Обычно logrotate запускается ежедневно службой cron.
Logrotate имеет свой конфигурационный файл /etc/logrotate.conf в котором описаны глобальные параметры, которые будут применяться по умолчанию, в нем как правило подключается директория include /etc/logrotate.d, откуда подгружаются дополнительные конфигурационные файлы с описанием правил для конкретных log-файлов.
Пример главного конфигурационного файла /etc/logrotate.conf
# ротировать каждую неделю weekly # хранить 4 log-файла rotate 4 # создать новый пустой log-файл create # сжимать log-файлы compress # подключить файлы с описанием правил для конкретных лог файлов include /etc/logrotate.d # запустить ротацию wtmp и btmp из основного файла конфигурации /var/log/wtmp { monthly minsize 1M create 0664 root utmp rotate 1 } /var/log/btmp { missingok monthly minsize 1M create 0600 root utmp rotate 1 }
Пример файла конфигурации для apache2, находящегося в каталоге /etc/logrotate.d/, выглядит следующим образом:
/var/log/httpd/site1/*log /var/log/httpd/site2/error.log { missingok # отсутствие файла не является ошибкой notifempty # не обрабатывать пустые файлы sharedscripts # скрипты prerotate/postrotate будут выполнены только один раз postrotate # скрипт будет выполнен сразу после ротации /sbin/service httpd reload > /dev/null 2>/dev/null || true endscript }
Базовым элементом конфигурационного файла является секция. Описание секции начинается с указания файлов над которыми будет производится ротация, (в нашем случае это файлы находящихся в директории /var/log/httpd/site1/ и имеющие расширение "log" или конкретные файлы /var/log/httpd/site2/error.log), а параметры указываются в фигурных скобах.
В файле /var/lib/logrotate.status можно посмотреть что и когда последний раз ротировалось.
ОСНОВНЫЕ ОПЦИИ LOGROTATE:
- -d Всключает режим отладки, а так же дублирует опциию -v. В режиме отладки не будут производиться изменения в log-файле и файле состояния
- -f, --force Принудительно произвести ротацию, даже если в данный момент она не требуется
- -m, --mail command Указать команду для отправки почты. Команда должна принимать 2 входных параметра: заголовок письма и получателя письма. Текст письма передается стандартным вводом (stdin). По умолчанию /usr/bin/mail -s
- -s, --state statefile Указать куда записать файл состояния. Полезно в случаях, когда logrotate работает от имени разных пользователей для различных наборов лог-файлов. По умолчанию /var/lib/logrotate/status
- --usage Выводит краткую инструкцию по использованию утилиты.
- -v, --verbose Выводит отладочную информацию.
СПИСОК ПАРАМЕТРОВ:
- rotate число
- Количество хранимых файлов
- daily
- Производить ротацию логов раз в день
- weekly
- Производить ротацию логов раз в неделю
- monthly
- Производить ротацию логов раз в месяц
- size размер
- Производить ротацию если log-файл превысил указанный размер (байт, Кбайт, Мбайт)
- start число
- Число с которого начнётся нумерация файлов
- compress
- Архивировать файлы (по умолчанию gzip)
- nocompress
- Отключает compress
- delaycompress
- Не сжимать 'свеже' созданный архив. Например access.log.1 не будет зжат. Используется с compress.
- nodelaycompress
- Не откладывать сжатие файла на следующий цикл
- compresscmd
- Позволяет указать команду для сжатия файлов. По умолчанию gzip
- uncompresscmd
- Директива позволяет указать команду для декомпрессии файлов. По умолчанию gunzip
- compressext
- Если используется сжатие, задает расширение сжатых файлов.
- compressoptions
- Задает параметры сжатия, по умолчанию - "-9", т.е. максимальное сжатие для gzip
- create права владелец группа
- После ротации создать пустой log-файл. Любые из этих атрибутов могут быть опущены, в этом случае вместо них для нового файла будут использованы атрибуты, имеющие те же значения, что и первоначальный log-файл
- nocreate
- Не создавать новый файл
- copy
- Создать копию оригинального log-файла, не изменяя его. Исключает create
- nocopy
- Не копировать исходный файл
- copytruncate
- Создать копию оригинального log-файла, а потом его 'обнулить'. Таким образом сам файл не удаляется. Исключает copy, create
- nocopytruncate
- После создания копии, не обрезать исходный файл журнала в его штатном местоположении
- ifempty
- Архивирует даже пустой файл (используется по умолчанию)
- notifempty
- Не архивировать пустые файлы
- missingok
- В случае отсутствия оригинального log-файла не вызовет ошибку
- nomissingok
- В случае отсутствия оригинального log-файла вызовет ошибку
- prerotate команды endscript
- Строки, находящиеся между postrotate и endscript будут выполнены как sh скрипт до начала архивирования log-файла
- postrotate команды endscript
- Строки, находящиеся между postrotate и endscript будут выполнены как sh скрипт после архивирования log-файла
- sharedscripts
- Скрипты postrotate и prerotate будут выполнены только один раз в рамках своей секции.
- nosharedscripts
- Отключает sharedscripts. Скрипты будут выполняются при ротации каждого log-файла, при определение /var/log/apache2/*.log скрипт будет выполнен столько раз сколько уникальных log-файлов будет находится в данной директории
- olddir directory
- Перемещать архивные файлы в указанную директорию
- noolddir
- Отключает olddir
- dateext
- К имени файлов журналов добавляется дата (%Y%m%d), вместо номера
- extension расширение
- Финальное расширение ext, которое дается лог-файлу после ротации.
- mail адрес
- Когда смена версий приводит к необходимости удалить старый журнал, то послать его по указанному адресу
- mailfirst
- Посылать не удаляемую версию журнала, а первую
- maillast
- Посылать удаляемую версию журнала; действует по умолчанию
- nomail
- Не отправлять файлы журналов почтой.
- include файл_или_каталог
- Читает файл, переданный в качестве аргумента, так, как будто он включен построчно в тело конфигурационного файла с того места, где указана директива include. Если задан каталог, то содержащиеся в нём файлы будут прочитаны в алфавитном порядке, прежде чем переданы на обработку для включения.
- tabooext [+] список_расширений
- Изменяет текущий список запрещённых расширений (см. include). Если списку расширений предшествует знак +, то этот список прибавится к текущему, иначе заместит его.
Комментарии (1)
GeradsEr:
сен 08, 2015 at 06:10
А мне понравилось,прикольно. тут