Атоматическая ротация логов с помощью утилиты logrotate. Описание и примеры настройки logrotate в Linux

У меня стояла задача: настроить сжатие логов DNS сервера Unbound, с возможностью удобного сбора этих бэкапов в коллектор. Также требовалось ограничить права доступа, чтобы с коллектора можно было зайти только в дирректорию, где хранятся бэкапы логов. Указанные действия проводил на CentOS 7 Minimal и CentOS 6.6 Minimal.

1) Сперва создаем группу пользователей, для которой будет ограничен доступ только по SFTP:

Vi /etc/ssh/sshd_config
Требуется в самом конце закомментировать строку #Subsystem sftp /usr/libexec/openssh/sftp-server и ограничить доступ для группы пользователей sftpd только по SFTP и только в домашнюю директорию. Для этого нужно добавить в конце следующие строки:

Subsystem sftp internal-sftp Match group sftpd ChrootDirectory %h X11Forwarding no AllowTcpForwarding no ForceCommand internal-sftp
Перезагружаем ssh:

Service sshd restart
3) Создаем пользователя dnslog, назначаем ему домашнюю папку и права на эту папку. Владелец должен быть root, никто другой не должен иметь прав на запись в эту папку, иначе ничего не получится:

Adduser -d /home/dnslog -s /sbin/nologin dnslog -g sftpd passwd dnslog
chown root /home/dnslog chmod 750 /home/dnslog
4) Создаем папку, внутри домашней директории нашего пользователя, для которой у logrotate будут права на запись.

Mkdir /home/dnslog/logs chown dnslog /home/dnslog/logs chmod 775 /home/dnslog/logs
Доступ для коллектора организован, теперь можно подключиться по SFTP и проверить, что все работает. Далее настроим ротацию логов:

5) Создаем в папке /etc/logrotate.d/ файл, в котором будут прописаны настройки ротации наших логов.

Vi /etc/logrotate.d/unbound_logrotate
Настройки примерно такие:

/var/log/unbound/unbound.log { daily rotate 48 missingok notifempty compress olddir /home/dnslog/logs size 1024M postrotate service rsyslog restart > /dev/null unbound-control log_reopen #Переоткрываем файл логов, иначе лог не будет писаться после ротации endscript }
Далее я установил время ротации через крон.

23 * * * * root run-parts /etc/cron.hourly

И перезагружаем крон:
service crond restart
Ротация будет осуществляться каждый час в 23 минуты.

7) В папке /etc/cron.hourly/ создаем файл с любым именем, где пишем скрипт, который будет выполняться при наступлении времени ротации, с таким содержимым:

/usr/sbin/logrotate /etc/logrotate.conf

Вот и все. Логи будут автоматически складываться в папку /home/dnslog/logs/

Проверить настройки ротации можно командой:

Logrotate -d /etc/logrotate.conf

Также, стоит отметить, что в Unbound существует два способа ведения логов: средствами Unbound и через syslog. Через syslog - лучший способ, так как не так тормозит работу Unbound. В указанном примере описана ротация логов средствами Unbound. Чтобы настроить логгирование через syslog, в конфигурации Unbound нужно включить параметр:
use-syslog: yes
А также немного переписать файл /etc/logrotate.d/unbound_logrotate
/var/log/messages { daily rotate 48 missingok notifempty compress size 1024M olddir /home/dnslog/logs create postrotate /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true chown dnslog /home/dnslog/logs/messages* chmod 775 /home/dnslog/logs/messages* endscript }

Logrotate – это программа которая дает возможность управлять логами в системы Unix/Linux. Утилита выполняет автоматическую ротацию, удаление или сжатие логов. Logrotate помогает сохранять место на диске. Утилиту довольно просто настроить и сейчас, вы убедитесь в этом.

Установка Logrotate для управления логами в Unix/Linux

Я приведу наглядные примеры использования на различных Unix/Linux ОС.

Установка Logrotate для управления логами в Debian/Ubuntu

Обновим пакеты в ОС:

# apt-get update -y

Для установки используем:

# apt-get install logrotate -y

Установка Logrotate для управления логами в CentOS/Fedora/RedHat

Обновим пакеты в ОС:

# yum update -y

Для установки используем:

# yum install logrotate -y

После чего, переходим к настройке и запуску логротейта.

Установка Logrotate для управления логами в Mac OS X

Выполняем установку HomeBrew — и, выполним поиск пакета:

$ brew search logrotate

Для установки, служит команда:

$ brew install logrotate

После чего, переходим к настройке и запуску logrotate.

Настройка Logrotate для управления логами в Unix/Linux

Конфигурационный файл можно найти в:

# vim /etc/logrotate.conf

Мой конфиг выглядит следующим образом:

Weekly create rotate 4 dateext include /etc/logrotate.d /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 }

Логи уровня приложения (заменяющие настройки по умолчанию в случае необходимости) хранятся в:

/etc/logrotate.d/

Я не буду заморачиваться и пропишу один конфиг для всей ротации (можно настраивать для каждого отдельно):

# vim /etc/logrotate.d/For_ALL

Прописываем:

/var/log/*.log { monthly size 100M rotate 7 compress delaycompress missingok notifempty create 644 root root }

Я беру все логи которые имеют любое название и заканчиваются на.log и отслеживаю их в интервале — месяц (служит директива monthly). Если превышает размер лога (size 100M), то выполнить ротацию Ротация происходит после 7 дней (файлы сохраняются 7 дней). Лог-файлы я сжимаю (директива compress). Опция delaycompress задерживает выполнение сжатия до следующей ротации логов, но она работает только с параметром — compress. Параметр missingok дает возможность обрабатывать следующий лог если какой-то отсутствует и не выдавая об ошибке. С опций notifempty можно запретить ротацию пустых файлов. После ротации логов, все будет удалено и чтобы выполнялось сохранение логов, нужно создать файлы снова. Так вот, create позволяет это делать.

Если в конфиге используется опция size и интервал ротации (например, monthly), то именно опция size превзойдет опцию интервала ротации, — это означает что что логи будут ротироваться, как только размер файла превысит указанное значение, не дожидаясь истечения срока.

После чего, можно выполнить проверку того, что создали (без его выполнения, только тест):

# logrotate -d /etc/logrotate.d/For_ALL

Если отладка не показала ничего плохого, можно запустить ротацию:

# logrotate -f -v /etc/logrotate.d/For_ALL

Вместо того, чтобы сжимать логи, можно переименовать их. Для этого есть директива dateext. Если наш формат даты отличается от yyyymmdd по умолчанию, мы можем указать его с помощью dateformat:

Dateext dateformat -%d%m%Y notifempty

Так же, можно по окончанию, отправить письмо на указанный емейл:

Mail mail_user@сайт

Если не хотите чтобы создавались пустые файлы после ротации, используйте:

Nocreate

Не откладывать сжатие файла на следующий цикл

Nodelaycompress

Если не хотите отправлять старые логи на почту, то юзайте:

Сохранять все логи в одной и той же папке:

Noolddir

Интервалы для ротации:

Daily weekly monthly yearly

Размеры для ротации (после превышения указанного размера, будет выполнятся ротация):

Size 6k size 66M size 66G

Можно посылать произвольные команды после выполнения ротации, например:

Postrotate echo "Ротация выполнена!" | mail root endscript

Данную утилиту, нужно запускать:

# logrotate /etc/logrotate.d/For_ALL

Можно автоматизировать и закинуть «logrotate» команду в crontab.

PS: По умолчанию, это возможно уже сделано:

# ls /etc/cron.daily/ cups logrotate makewhatis.cron mlocate.cron prelink readahead.cron tmpwatch

Например, файл конфигурации для apache2 выглядит следующим образом:

/var/log/apache2/*.log { weekly missingok rotate 2 compress delaycompress notifempty create 640 root root sharedscripts postrotate if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then /etc/init.d/apache2 reload > /dev/null fi endscript }

Ротация производится раз в неделю. При отсутствии лога — не выводить ошибку. Сохранять 2 последних ротированных фалов и конечно же, сжимать их, но для пустых файлов никаких действий не выполнять. После того, как ротация прошла, создавать пустой файл с указанными правами.

Опции Logrotate

Наиболее часто использующиеся опции:

D — Данная опция, дает возможность включить отладочный режим, который использует «-v» параметр. В этом режиме, ничего не будет выполнятся и применятся.

F, —force — Данная опция, дает возможность принудительно запустить logrotate и запустить ротацию логов. Иногда бывает полезным, например — когда добавили новый функционал в конфиг или старые логи удалены вручную и чтобы не создавать новые файлы вручную, можно запустить логротейт с данной опцией.

M, —mail command — Позволяет указывать команду для отправки лог-файлов по почте и она должна содержать входные параметры:

  • заголовок письма
  • получателя письма

После выполнения, логи будут отправлены на указанное мыло (команда читает данные со стандартного входа STDIN), а командой по умолчанию — /usr/bin/mail -s.

S, —state statefile — Данная опция позволяет задавать произвольный файл с состоянием. Это хорошо использовать тогда, когда в системе имеется несколько пользователей, которые работают (запускают) с logrotate. По умолчанию, данный фал сохраняется в /var/lib/logrotate/status.

—usage — Показать мануал по использованию данной утилиты.

V, —verbose — Данная опция, позволяет выводит все происходящее на экран (весь вывод).

Вот и все, статья «Установка Logrotate для управления логами в Unix/Linux» завершена!

logrotate — это программа ротации логов, позволяющая сохранять в отдельный файл логи за определенный период времени или разделить лог на части определенного размера. Logrotate позволяет очень гибко работать с логами, имея при этом простые и понятные конфигурационные файлы. Кроме этого, логи можно автоматически сжимать и информировать по почте о ротации с отсылкой свежего лога, либо последнего, который удален при последней ротации. В данный момент logrotate является самой распространенной системой ротации логов, поскольку широко используется в операционных системах на базе ядра linux, которые доминируют в сфере серверов по всему миру.

Конфигурация logrotate

Конфигурация logrotate разделена на части. Основная часть обычно хранится в файле /etc/logrotate.conf. В этом файле могут присутствовать секции для ротации логов, а также директива «include /etc/logrotate.d», подключающая конфигурационные файлы из директории /etc/logrotate.d. Таким образом, для создания нового задания ротации вам достаточно создать конфигурационный файл и поместить его в эту директорию. Название файла желательно задавать такое же, как и название сервиса, логи которого будут ротироваться.

Вот пример конфигурационного файла /etc/logrotate.conf:

# rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # uncomment this if you want your log files compressed #compress # packages drop log rotation information into this directory include /etc/logrotate.d # no packages own wtmp, or btmp -- we"ll rotate them here /var/log/wtmp { missingok monthly create 0664 root utmp rotate 1 } /var/log/btmp { missingok monthly create 0660 root utmp rotate 1 }

Как вы понимаете, ротироваться могут не только файлы логов, но и любые другие файлы. К примеру, можно таким образом делать ежедневные резервные копии какого-то определенного файла. Но ротация логов — это именно та основная задача, которую изначально решает программа, и решает хорошо.

Каждый файл в директории /etc/logrotate.d может включать одну или несколько секций. Каждая секция выглядит в общем виде так:

Название-файла-лога { параметры ротации }

Параметры ротации — это именно то, что обеспечивает гибкость ротации. У logrotate достаточно много опций, но их можно разбить на несколько групп. Вот опции, которые могут быть использованы в конфигурационных файлах:

Опции, определяющие интервал ротации:

Опции сжатия логов:

compress Сжимать логи при ротации. По умолчанию для сжатия используется gzip
compresscmd Команда/программа, которая будет использоваться для сжатия логов
compressoptions Опции команды ротации, которые будут использоваться при сжатии логов
uncompresscmd Команда разархивации логов. По умолчанию gunzip
compressext Указать расширение файлов, которое будет указываться для сжатых логов
delaycompress Отложить сжатие лога до следующей ротации. Таким образом последняя версия лога после ротации будет несжатой, а более ранние — сжатыми
nocompress Не сжимать логи при ротации
nodelaycompress Не откладывать сжатие до следующей итерации ротации. Эта опция перегружает опцию delaycompress

Опции копирования:

copy Копировать лог-файл, но не изменять оригинал. Эту опцию можно использовать, когда надо создать снимок лога на определенный момент, вместо ротации, либо когда для усечения лога используется внешняя программа. Если используется опция copy, то опция create, если она указана, не будет иметь никакого эффекта, так как старый лог остается.
copytruncate Урезать оригинальный файл до нулевого размера после создания копии вместо переименования оригинального файла и создания нового. Эта опция используется тогда, когда программе, записывающей лог, нельзя указать, что нужно закрыть связанный с файлом лога дескриптор и открыть новый. Такая программа может продолжать писать в старый файл. При использовании этой опции есть один момент, связанный с тем, что на копирование требуется некоторое время и поэтому файл не может быть скопирован мгновенно. За время копирования в лог могут быть добавлены записи, которые будут утеряны при усечении файла до нулевого размера. При использовании этой опции опция create также не будет иметь эффекта, так как старый файл остается на месте
nocopy Не копировать оригинальный лог-файл. Эта опция перегружает опцию copy
nocopytruncate Не усекать оригинальный лог-файл после создания копии. Эта опция перегружает опцию copytruncate

Опции создания нового лог-файла (после ротации старого):

create права владелец группа
create владелец группа
Указать права доступа, владельца и группу владения нового свежесоздаваемого лог-файла сразу после его создания. Как уже упоминалось, если используются опции copy и copytruncate, то create не имеет смысла, так как старый файл остается на месте, новый файл не создается. Чтобы опция create отработала, файл должен отсутствовать. Права указываются восьмеричными значениями в таком же виде, как и при использовании программы chmod. Например, 644 или 600. Если какое-то значение (права/владелец/группа) опущено, то оно будет таким же, как у оригинального файла
nocreate Новые лог-файлы не создаются. Эта опция перегружает опцию create

Опции, связанные с удалением файла лога:

Опции, связанные с датами:

dateext Использовать в названии старых лог-файлов дату вместо номера. При использовании номера названия выглядят так: logfile.1.gz, logfile.2.gz и так далее
nodateext Не использовать дату в названиях старых лог-файлов. Эта опция перегружает опцию dateext
dateformat форматная-строка Указать форматную строку для даты, которая будет добавляться к названию лога. Форматная строка похожа на используемую в команде date, но допустимы только шаблоны %Y(четырехзначный номер года), %m(двузначный номер месяца), %d(двузначный номер дня месяца) и %s(unix time, количество секунд с 00:00 01.01.1970). Значение по умолчанию «-%Y%m%d», минус также включен в шаблон, при задании шаблона его можно упустить. Нужно отметить, что logrotate использует сортировку для определения более старых файлов, которые необходимо удалить, поэтому строка даты должна учитывать корректную сортировку. Именно поэтому вначале пишется обычно год, затем месяц и только затем день.
dateyesterday Использовать вчерашнюю дату при ротации. Таким образом, дата в названии файла будет соответствовать дате файла, который находится внутри архива

Опции, связанные с рассылкой логов:

Опции, связанные с размером и существованием файла лога:

maxsize размер Лог ротируется, когда его размер превысит указанный, еще до наступления следующего интервала ротации (daily, weekly, monthly, yearly). Поскольку такая ротация не зависит от времени, поэтому использовать в названии файла дату не имеет смысла.
minsize размер Лог ротируется, когда его размер больше указанного, но не ранее, чем наступает соответствующий временной интервал ротации (daily, weekly, monthly, yearly)
size размер Лог ротируется, когда его размер больше указанного количества байт. Если после размера указана буква k, размер считается в килобайтах, если M — в мегабайтах, если G — в гигабайтах. Например, 1G или 10M.
ifempty Ротировать файл лога, даже если он пуст. Используется по умолчанию.
notifempty Не ротировать файл лога, если он пуст. Перегружает опцию ifempty.
missingok Если файл лога отсутствует, перейти к следующему без сообщения об ошибке
nomissingok Если файл лога отсутствует, возникнет ошибка. Этот параметр установлен по умолчанию.

Опции, связанные с директориями, в которых хранятся логи:

Файлы настроек для logrotate позволяют выполнять скрипты в процессе ротации логов. Таким образом можно выполнить какие-то действия на каждом этапе ротации.

Опции выполнения скриптов:

postrotate/endscript Строки, находящиеся между словами postrotate и endscript, каждое из которых должно находиться в отдельной строке, выполняются с использованием /bin/sh после ротации файла лога. Обычно скрипту в качестве первого аргумента передается полное имя файла лога с путем. Если указана директива sharedscripts, то передается список файлов. Таким образом можно выполнить скрипт для всех файлов сразу
prerotate/endscript Строки, находящиеся между словами prerotate и endscript, каждое из которых должно находиться в отдельной строке, выполняются с использованием /bin/sh перед ротацией файла лога. Обычно скрипту в качестве первого аргумента передается полное имя файла лога с путем. Если указана директива sharedscripts, то передается список файлов.
sharedscripts В обычном режиме скрипты выполняются по одному разу на каждый файл, указанный для ротации. Таким образом скрипты могут быть выполнены несколько раз, по разу для каждого файла, указанного для ротации. Если указана директива sharedscripts, то скрипты выполняются по одному разу, но в качестве аргументов им передается список файлов. Если же ни один файл лога не ротируется, скрипты выполнены не будут. Если в процессе выполнения скрипта возникнет ошибка, то действие не будет завершено для всех логов.
nosharedscripts Запускать prerotate и postrotate скрипты для каждого лога, который ротируется. Это значение по умолчанию, кроме того, эта директива перегружает sharedscripts. Скриптам передается абсолютный путь к файлам логов. Если во время выполнения скрипта возникнет ошибка, то действие не будет завершено только для одного текущего файла лога.
preremove/endscript Строки, находящиеся между словами preremove и endscript, каждое из которых должно находиться в отдельной строке, выполняются с использованием /bin/sh перед удалением старого файла лога. logrotate передаст название файла, который будет удален, скрипту в качестве аргумента
firstaction/endscript Строки, находящиеся между словами firstaction и endscript, каждое из которых должно находиться в отдельной строке, выполняются с использованием /bin/sh один раз до того, как лог-файлы будут ротированы и еще до того, как будет выполнена секция prerotate. Это произойдет только в том случае, если хотя бы один лог-файл будет действительно ротироваться. Скрипту передается весь список файлов текущей секции в качестве аргументов. Если скрипт заканчивает работу с ошибкой, другого запуска не будет.
lastaction/endscript Строки, находящиеся между словами lastaction и endscript, каждое из которых должно находиться в отдельной строке, выполняются с использованием /bin/sh один раз только после того, как лог-файлы будут ротированы и даже после того, как будет выполнена секция postrotate. Это произойдет только в том случае, если хотя бы один лог-файл ротирован. Скрипту передается весь список файлов текущей секции в качестве аргументов. Если скрипт заканчивает работу с ошибкой, другого запуска не будет.

Опции общего назначения:

extention расширение Лог-файлы с указанным расширением могут сохранять его после ротации. Если используется компрессия, то расширение с типом архива (обычно.gz) появляется после расширения. Например, если у вас файл лога называется mylog.foo и вы хотите получить при ротации файл mylog.1.foo.gz, а не mylog.foo.1.gz
rotate количество Лог-файлы ротируются указанное количество раз до удаления или отправки на адрес, указанный в директиве mail. Если количество равно 0, старые версии просто удаляются вместо ротации.
start номер Указать номер, используемый как база для нумерации при ротации. Например, если вы указываете 0, то оригинальный файл будет ротироваться в файл с окончанием.0, и далее по увеличению, если указать 9, то нумерация начнется с.9. Файлы в любом случае будут ротироваться такое количество раз, которое указано в директиве count.
su пользователь группа Выполнять ротацию логов под указанным пользователем и группой вместо пользователя по умолчанию (обычно root). Если у пользователи или группы недостаточно прав для осуществления ротации, возникнет ошибка.
include файл-или-директория logrotate считывает указанный файл и вставляет его как есть в конфигурационный файл в место вставки директивы include. Если указана директория, файлы из нее сортируются по алфавиту и затем вставляются в конфигурацию. При этом, если файлы не являются обычными файлами, они игнорируются. Это могут быть, например, именованные пайпы или директории. Также игнорируются файлы, имеющие расширения, указанные в директории tabooext.
tabooext [+] список Изменение текущего списка игнорируемых расширений. Если перед списком стоит +, то текущий список дополняется указанным. Если + не указан, то список заменяется. По умолчанию список изначально включает следующие расширения: .rpmsave, .rpmorig, ~, .disabled, .dpkg-old, .dpkg-dist, .dpkg-new, .cfsaved, .ucf-old, .ucf-dist, .ucf-new, .rpmnew, .swp, .cfsaved, .rhn-cfg-tmp-*

И напоследок простой пример.

/var/log/mydaemon/mydaemon.log /var/log/mydaemon/error.log{ # Ежедневная ротация daily # Начинать нумерацию с 0 start 0 # Ротировать 30 раз до удаления rotate 30 # Не генерировать ошибку, если файла лога нет missingok # Удалять логи при помощи команды shred shred # Делать 3 цикла перезаписи shredcycles 3 # Отложить сжатие последнего лога delaycompress # Выполнять postrotate только один раз sharedscripts # После ротации послать программе сигнал SIGHUP, в результате чего # будут переоткрыты дескрипторы логов # (многие программы поддерживают такое поведение) postrotate kill -SIGHUP $(cat /var/run/mydaemon.pid) endscript }

Если вы раньше не пользовались программой logrotate или пользовались, но никогда не настраивали тонко под себя, надеюсь эта информация вам поможет.

Logrotate — приложение, разработанное для облегчения управления лог-файлами . Особенно Logrotate полезен там, где создается большое количество лог-файлов. Утилита позволяет в автоматическом режиме архивировать, удалять, очищать и отправлять на e-mail лог-файлы. Этот процесс обычно называетсяротацией лог файлов .

Logrotate может быть настроен на ежедневную, еженедельную или ежемесячную ротацию. Кроме того, можно задать размер файла, по достижении которого файл будет ротирован. Обычно logrotate выполняется в качестве каждодневного задания (cron).

Установка Logrotate
Установка обычна для Debian / Ubuntu-based дистрибутивов:

$ sudo aptitude install logrotateКраткое описание файла настроек Logrotate Описание того, каким образом Logrotate будет работать с тем или иным лог файлом находится в специальном конфигурационном файле. Как правило, они располагаются в директории /etc/logrotate.d/ . Например, файл конфигурации для apache2 выглядит следующим образом: $ more /etc/logrotate.d/apache2 /var/log/apache2/*.log { weekly # ротация раз в неделю missingok # отсутствие файла не является ошибкой rotate 52 # сохраняется последние 52 ротированных файла compress # сжимать ротируемый файл delaycompress # сжимать предыдущий файл при следующей ротации # (т.е. файл *.log.1 будет не сжат, а *.log.2 и далее сжатыми) notifempty # не обрабатывать пустые файлы create 640 root adm # сразу после ротации создать пустой файл с заданными правами и пользователем sharedscripts # крипты prerotate/postrotate будут выполнены только один раз # не зависимо от количества журналов, подходящих под заданный шаблон postrotate # скрипт будет выполнен сразу после ротации if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then /etc/init.d/apache2 reload > /dev/null fi endscript }

При этом, первая строка /var/log/apache2/*.log есть ничто иное, как шаблон обрабатываемых лог-файлов. Он означает, что указанная конфигурация ротации будет использоваться для всех файлов, находящихся в директории /var/log/apache2/ и имеющих расширение «log».

Допустимых директив в конфигурационном файле очень много (более 40). Подробнее о них можно узнать из man logrotate .

Основные опции Logrotate

Как правило, после настройки конфигурационного файла появляется необходимость проверить работуlogrotate для новых логов. Для этого есть возможность непосредственного запуска logrotate из командной строки. При этом допускаются следующие опции:

  • -d . Включает режим отладки, а так же дублирует опцию -v . В режиме отладки никаких действий с логами не будет выполнено.
  • -f, —force . Заставляет logrotate выполнить ротацию логов. Бывает необходимо после добавления новых конфигурационных файлов или если старый лог файл был удалён вручную; таким образом будут созданы новые лог-файлы и журналирование будет корректно продолжено.
  • -m, —mail command . Указывает, какую команду использовать для отправки журналов по почте. Команда должна принимать 2 входных параметра:
    • заголовок письма
    • получателя письма
  • -s, —state statefile . Указывает на использование альтернативный файл состояния. Полезно в случаях, когда logrotate работает от имени разных пользователей для различных наборов лог-файлов. Дефолтный файл состояния: /var/lib/logrotate/status
  • —usage . Выводит краткую инструкцию по использованию утилиты.
  • -v, —verbose . Вывод диагностических сообщений во время ротации

Пример настройки Logrotate

В качестве примера допустим, что в директории /home/site/сайт/logs/ располагаются лог-файлы таких веб серверов, как nginx и apache. Работают они в связке: — фронтенд, apache2-бэкенд.

$ more /etc/logrotate.d/debianworld.ru # Ротация логов nginx (front-end) # Отдает статику, все остальное - проксирует на apache. # Лог ведется более интенсивно. /home/dw/debianworld.ru/logs/nginx_*.log { daily # ежедневная ротация missingok # отсутствие файла не является ошибкой rotate 45 # хранится история за 45 дней compress # ротируемые файлы сжимаются delaycompress # ротируемый файл не сжимается, остальные - сжимаются notifempty # не обрабатывать пустые файлы create 640 dw www-data # права, пользователь нового файла sharedscripts # prerotate/postrotate выполняются только 1 раз prerotate # Cбор статистики посещений для AWstats /usr/bin/perl /usr/lib/cgi-bin/awstats.pl -update -config=debianworld.ru -databasebreak=day endscript postrotate # Перезапуск nginx [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid` endscript } # Ротация логов apache2 (back-end) # Лог ведется менее интенсивно. /home/dw/debianworld.ru/logs/apache*.log { weekly # еженедельная ротация missingok # отсутствие файла не является ошибкой rotate 4 # хранится история за 4 недели compress # ротируемые файлы сжимаются nodelaycompress # ротируемый файл так же сжимается notifempty # не обрабатывать пустые файлы create 640 dw www-data # права, пользователь нового файла sharedscripts # postrotate выполняется только 1 раз postrotate # Перезапуск apache2 if [ -f /var/run/apache.pid ]; then /etc/init.d/apache2 restart > /dev/null fi endscript }



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: