2.9.7.5 Logrotate – настройка ротации, хранения системных журналов
Основные настройки
Вспомогательные настройки
Запуск ротации вручную
Проверка конфигурации
Автоматический запуск ротации
Окружение
- Версия ОС: 7.3
- Конфигурация ОС: Рабочая станция
- Редакция ОС: Стандартная
- Архитектура: x86_64
- Версия ПО: logrotate-3.15.1-3
В РЕД ОС большинство сервисов и программ, работающих в фоне, записывают информацию о своем состоянии, результатах работы и ошибках в файлы, называемые журналами. Стандартное расположение журналов, или, как их еще называют, логов — в папке /var/log.
С помощью анализа этих файлов можно понять, что работает не так, почему произошла ошибка и как решить возникшую проблему. Однако существует некоторая проблема: размер журналов постоянно растет, они занимают все больше и больше места на диске, поэтому необходимо вовремя удалять устаревшие записи, чтобы они не мешали нормальной работе компьютера. Делать это можно вручную или воспользоваться утилитой logrotate.
Logrotate — это утилита для автоматического управления журналами. С помощью утилиты logrotate можно настроить автоматическое удаление, ротацию и сжатие журналов для экономии места на диске.
Для просмотра справочной информации об утилите выполните команду:
man logrotate
Проверку условий можно настроить ежедневно, еженедельно или ежемесячно — это позволяет создать схему ротации журналов, удобную именно для вас и вашего сервера.
Вы можете подробнее ознакомиться с возможностью настройки ротации журналов при помощи утилиты logrotate, просмотрев наши обучающие видео:
-
на RuTube — Настройка ротации логов: logrotate;
-
в VK Видео — Настройка ротации логов: logrotate.
На наших каналах вы также сможете найти много другой полезной информации.
В дистрибутиве РЕД ОС программа является предустановленной по умолчанию, поэтому даже установка ОС подробно записывается в журнал:
ls /var/log/anaconda/ anaconda.log journal.log program.log X.log dbus.log ks-script-krff3g7v.log redos-postinstall.log
dnf.librepo.log lvm.log storage.log
hawkey.log packaging.log syslog
Если по каким-либо причинам в вашей системе утилита отсутствует, установить ее можно командой (потребуются права администратора):
sudo dnf install logrotate
Основные настройки
Основные настройки утилиты находятся в файле /etc/logrotate.conf.
sudo nano /etc/logrotate.conf
# see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file dateext # uncomment this if you want your log files compressed #compress # packages drop log rotation information into this directory include /etc/logrotate.d # system-specific logs may be also be configured here.
К основным параметрам утилиты logrotate относятся:
-
-f,--force— указывает logrotate принудительно включить ротацию. Может быть полезно после добавления новых записей в файл конфигурации или в случае удаления старых файлов журналов вручную. При использовании параметра будут созданы новые файлы, и журналирование продолжится корректно; -
-d,--debug— включает режим отладки, при котором никакие изменения в журналы не вносятся, а файл состояния logrotate не обновляется. Выводятся только отладочные сообщения; -
-
s,--state— указывает logrotate использовать альтернативный файл состояния. Это полезно, если logrotate запускается от имени другого пользователя; -
-v,--verbose— включает подробный режим, например, для отображения сообщений во время ротации; -
-l,--log— указывает logrotate записывать подробные данные в файл журнала; -
--usage— выводит краткое сообщение об использовании; -
-?,--help— выводит справочное сообщение; -
--version— выводит информацию о версии утилиты.
Периодичность выполнения проверок настраивается с помощью следующих директив:
-
hourly— каждый час; -
daily— каждый день; -
weekly— каждую неделю; -
monthly— каждый месяц; -
yearly— каждый год.
По умолчанию настроена еженедельная (weekly) проверка.
Обработка и управление журналами настраивается с помощью следующих директив:
-
rotate <количество>— хранить указанное число старых журналов; -
create— создать новый пустой журнал сразу после перемещения старого с тем же именем (с указанными правами доступа, владельцем и группой, если параметры заданы); -
dateext— архивирование старых версий файлов журналов c добавлением даты в формате ГГГГММДД, а не просто числа; -
compress— сжимать старые версии файлов журналов с помощью gzip по умолчанию; -
delaycompress— отложить сжатие предыдущего файла журнала до следующего цикла ротации; -
extension— сохранять расширение у журналов после ротации; -
mail— после ротации журнал отправляется на e-mail ; -
nomail— не отправлять на почту конкретный журнал, если это не требуется; -
maxage— удалять старые файлы журналов старше указанного количества дней; -
missingok— в случае отсутствия файла журнала перейти к обработке следующего, не выдавая сообщение об ошибке; -
olddir <путь_к_директории>— директория для хранения старых файлов журналов; -
postrotate/endscript— выполнить произвольные команды после ротации; -
start— задать начальный номер для нумерации архивных копий файлов; -
size— размер журнала (в байтах), по достижении которого, он будет ротирован.
Стандартная конфигурация предполагает сохранение четырех архивных копий журналов, автоматическое создание нового файла после ротации и добавление временной метки в имена архивных файлов.
Вспомогательные настройки
В директории дополнительных настроек /etc/logrotate.d находятся несколько файлов, по названиям и содержимому которых можно определить, к журналам какой программы они относятся:
ls /etc/logrotate.d/ afick bootlog chrony firebird glusterfs libreswan psacct samba wpa_supplicant aide btmp dnf firewalld iscsiuiolog ppp rsyslog sssd wtmp
В файлах содержатся правила обработки отдельных журналов.
Для просмотра параметров файла конфигурации bootlog выполните команду:
cat /etc/logrotate.d/bootlog
/var/log/boot.log
{
missingok
daily
copytruncate
rotate 7
notifempty
}
Файл конфигурации состоит из записи, которая разделена на две части:
- имя файла, который нужно обрабатывать (/var/log/boot.log);
- параметры обработки, указанные в фигурных скобках.
Описание параметров обработки:
missingok– в случае отсутствия файла журнала перейти к обработке следующего, не выдавая сообщение об ошибке;daily– обрабатывать журнал каждый день;copytruncate– обрезать оригинальный файл до нулевого размера после создания копии вместо переименования оригинального файла и создания нового;rotate 7– хранить максимум 7 ротированных копий журналов;notifempty– не ротировать журнал, если он пуст.
Для просмотра параметров файла конфигурации sssd выполните команду:
cat /etc/logrotate.d/sssd
/var/log/sssd/*.log {
weekly
missingok
notifempty
sharedscripts
rotate 2
compress
delaycompress
postrotate
/bin/kill -HUP `cat /var/run/sssd.pid 2>/dev/null` 2> /dev/null || true
/bin/pkill -HUP sssd_kcm 2> /dev/null || tru
endscript
}
где:
-
/var/log/sssd/*.log— путь к файлу, который нужно ротировать. В данном случае указанные далее настройки будут применяться ко всем (*) файлам с расширением .log, относящимся к sssd; -
weekly— обрабатывать журнал еженедельно; -
missingok— в случае отсутствия файла журнала перейти к обработке следующего, не выдавая сообщение об ошибке; -
notifempty— не ротировать журнал, если он пуст; -
sharedscripts— выполнять скрипты (postrotate/endscript) один раз для всех файлов, а не для каждого отдельно; -
rotate 2— хранить максимум 2 ротированных копии журналов; -
compress— ротированные журналы архивировать с помощью gzip; -
delaycompress— откладывать сжатие на одну ротацию, чтобы последний ротированный файл оставался в несжатом виде; -
postrotate … endscript— выполнять указанные команды после ротации журналов; -
/bin/kill -HUP `cat /var/run/sssd.pid 2>/dev/null` 2> /dev/null || true— послать сигнал SIGHUP основному процессу SSSD для переключения на новый журнал; -
/bin/pkill -HUP sssd_kcm 2> /dev/null || true— послать сигнал SIGHUP процессу sssd_kcm, чтобы он тоже переключился на новый журнал.
В файле конфигурации sssd дополнительно указана команда терминала, заключенная в postrotate и endscript. Строки, находящиеся между данными служебными словами, каждое из которых должно находиться в отдельной строке, выполняются с использованием /bin/sh после ротации файла журнала.
Запуск ротации вручную
Для принудительной ротации журналов запустите утилиту с параметром -f, (--force). Данный параметр позволяет принудительно и немедленно выполнять ротацию журналов согласно указанному файлу конфигурации, игнорируя все стандартные временные интервалы и условия.
Данная функция полезна в случае, если были произведены новые записи в конфигурационный файл logrotate или старые файлы журналов были удалены вручную. Будут созданы новые файлы, и журналирование продолжится корректно.
Для запуска ротации вручную выполните команду (потребуются права администратора):
sudo logrotate -f <путь_к_файлу_конфигурации>
Проверка конфигурации
Для проверки корректности настройки файла конфигурации logrotate запустите утилиту с параметром -d (--debug), при котором никакие изменения в журналы не вносятся, а файл состояния logrotate не обновляется. Выводятся только отладочные сообщения.
Для проверки файла конфигурации /var/log/bootlog выполните команду (потребуются права администратора):
sudo logrotate -d /etc/logrotate.d/bootlog WARNING: logrotate in debug mode does nothing except printing debug messages! Consider using verbose mode (-v) instead if this is not what you want. reading config file /etc/logrotate.d/bootlog Reading state from file: /var/lib/logrotate/logrotate.status Allocating hash table for state file, size 64 entries
Handling 1 logs
rotating pattern: /var/log/boot.log after 1 days (7 rotations) empty log files are not rotated, old logs are removed considering log /var/log/boot.log Now: 2024-11-15 11:46 Last rotated at 2024-11-15 11:00 log does not need rotating (log is empty)
Если сообщений об ошибках нет, можно считать, что настройка завершена успешно.
Автоматический запуск ротации
В РЕД ОС задания на автоматический запуск logrotate создаются по умолчанию в файле /usr/lib/systemd/system/logrotate.timer.
Для настройки ротации журналов приложения по нестандартному расписанию выполните команду (потребуются права администратора):
sudo systemctl edit logrotate.timer
В конфигурационный файл /etc/systemd/system/logrotate.timer.d/override.conf добавьте следующее содержимое:
[Unit] Description=Daily rotation of log files Documentation=man:logrotate(8) man:logrotate.conf(5) [Timer] OnCalendar=*-*-* 06:00:00 Persistent=true [Install] WantedBy=timers.target
Настроенное расписание обеспечивает выполнение задачи в 6 утра каждого дня.
Сохраните внесённые изменения и запустите таймер следующей командой:
sudo systemctl start logrotate.timer
Проверьте его статус:
sudo systemctl status logrotate.timer ● logrotate.timer - Daily rotation of log files Loaded: loaded (/usr/lib/systemd/system/logrotate.timer; enabled; preset: enabled) Active: active (waiting) since Tue 2025-12-16 16:41:34 MSK;24min ago Trigger: Wen 2025-12-17 06:00:00 MSK; 12h left Triggers: ● logrotate.service Docs: man:logrotate(8) man:logrotate.conf(5) дек 16 17:00:15 vbox systemd[1]: Started logrotate.timer - Daily rotation of log files.
Статус службы logrotate.timer должен быть активен (active (waiting)).
Дата последнего изменения: 24.12.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.