Logrotate - это утилита командной строки в Linux и других Unix-подобных операционных системах, которая автоматизирует процесс управления лог-файлами.
Утилита позволяет автоматически ротировать, сжимать, удалять, и пересылать журналы. Каждый файл журнала может обрабатываться ежедневно, еженедельно, ежемесячно или когда он становится слишком большим.
Поскольку размер журналов постоянно растет, правильно настроенный logrotate гарантирует, что ваши лог-файлы не займут слишком много места на диске и не помешают нормальной работе системы. В итоге мы экономим дисковое пространство, удаляя или архивируя старые лог-файлы тем самым предотвращая их накопление и переполнения диска.
Установка пакета производится следующей командой:
# RedHat-based Linux distributions
sudo yum install logrotate
# Ubuntu-based Linux distributions
sudo apt install logrotate
Если при запуске logrotate командной строке не указаны аргументы, будет напечатана версия, информация об авторских правах и короткая справку по использованию.
ubuntu@host:~$ logrotate
logrotate 3.14.0 - Copyright (C) 1995-2001 Red Hat, Inc.
This may be freely redistributed under the terms of the GNU General Public License
Usage: logrotate [-dfv?] [-d|--debug] [-f|--force] [-m|--mail=command] [-s|--state=statefile] [-v|--verbose] [-l|--log=logfile] [--version] [-?|--help] [--usage]
[OPTION...] <configfile>
Все основные настройки утилиты находятся в файле /etc/logrotate.conf
Поддерживается подключение дополнительных конфигурационных файлов, размещённых в директории /etc/logroate.d/
, для этого в основном файле /etc/logrotate.conf
должна присутствовать строка:
include /etc/logrotate.d
Таким образом, для создания нового задания ротации вам достаточно создать конфигурационный файл и поместить его в директорию /etc/logroate.d/
Файлы конфигурации содержат правила для управления лог-файлами.
Пример:
/var/log/apache2/access.log {
rotate 5
size 100M
compress
delaycompress
notifempty
missingok
copytruncate
postrotate
systemctl reload apache2 > /dev/null 2>&1
endscript
}
/var/log/apache2/access.log
— Указывает на имя или шаблон имени лог-файлов, которые необходимо обрабатывать.
rotate 5
— количество хранимых архивов.
size 100M
— максимальный размер файла, при превышении которого журнал будет ротирован.
compress
— опция сжатия файлов. По умолчанию для сжатия используется gzip.
delaycompress
— сжимать только после ротации.
notifempty
— не отправлять уведомления, если файл пуст.
missingok
— игнорировать, если файл отсутствует.
postrotate
— перезагрузить Apache после ротации.
copytruncate
— предписывает при ротации создать копию журнала, а затем его обнулить. Таким образом сам файл журнала не удаляется.
После настройки какого-либо файла конфигурации желательно проверить его корректность. Для этого необходимо запустить утилиту logrotate
с параметром-d
, она выведет все, что планируется сделать, но не будет изменять файлы на диске.
logrotate -d /etc/logrotate.d/bootlog
Обычно logrotate запускается ежедневно службой cron. Он будет изменять журнал чаще раза в день, если условия ротации журнала используют размер журнала, а logrotate будет запускаться чаще раза в день или если используется опция −f или −−force
В командной строке может быть указано любое количество файлов конфигурации. Более поздний конфигурационный файл может отменять опции заданные более ранним, так что порядок перечисления конфигурационных файлов logrotate важен. Если в командной строке указан каталог, каждый файл в этом каталоге используется как конфигурационный файл.
Чтобы запустить ротацию вручную, выполните команду:
/usr/sbin/logrotate -f <путь к конфигурационному файлу logrotate>
Для примера, данная команда приведёт к выполнению всех правил, определенных в конфигурационном файле.
logrotate /etc/logrotate.conf
Параметры запуска:
−d, −−debug
— Включить отладочный режим, так же это подразумевает опцию −v. В режиме отладки не будут производиться изменения в журналах и файле состояния logrotate.
−f, −−force
— Сообщает logrotate принудительно выполнить ротацию, даже если он не считает это необходимым. Иногда это полезно после добавления новых записей в конфигурационный файл logrotate, или если старые файлы журналов были удалены вручную, так что будут созданы новые файлы и журналирование продолжится корректно.
−−usage
— Вывести короткую справку по использованию.
−v, −−verbose
— Выводить сообщения во время ротации.
По умолчанию, logrotate запускается раз в сутки, задание на запуск создается в файле /etc/cron.daily/logrotate
если необходимо запускать logrotate каждый час, можно сделать символическую ссылку:
ln -s /etc/cron.daily/logrotate /etc/cron.hourly/logrotate
Для более частой проверки, необходимо добавить задание в cron с нужным интервалом запуска.
Запуск ротации раз в 5 минут.
*/5 * * * * /etc/cron.daily/logrotate
Запуск ротации раз в 5 минут, с указанием файла конфигурации.
*/5 * * * * /usr/sbin/logrotate -f /etc/logrotate.conf
Пример конфигурационного файла /etc/logrotate.d/dion
для ротации журналов DION
/var/log/dion/*.log { # Указывает, что правило будет применяться ко всем файлам с расширением .log в директории /var/log/dion/.
size 1G # Ротация при достижении 1 ГБ
daily # Пытаться выполнять ротацию каждый день (но size имеет приоритет)
missingok # Не выдавать ошибку, если файл лога отсутствует
compress # Сжимать старые логи
delaycompress # Отложить сжатие до следующей ротации (чтобы .1 оставался несжатым)
rotate 5 # Хранить 5 архивных копий логов
copytruncate # Копировать файл и затем очищать оригинал (без переоткрытия)
maxage 14 # Удалять архивы старше 14 дней
}
Параметры ротации настраиваются в соответствии с требованиями к журналированию событий в вашей организации.
Для получения дополнительной информации о программе обратитесь к man-страницам.
man logrotate