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)

  1. GeradsEr:
    сен 08, 2015 at 06:10

    А мне понравилось,прикольно. тут

    Ответить