2.9.7.5 Logrotate – настройка ротации (хранения) системных журналов
Скачать документОсновные параметры для настройки
Вспомогательные настройки
Проверка конфигурации
В РЕД ОС большинство сервисов и программ, которые работают в фоне, записывают информацию о своем состоянии, результатах работы и ошибках в файлы, называемые журналами. Стандартное расположение журналов или, как их еще называют, логов - в папке /var/log.
С помощью анализа этих файлов можно понять, что работает не так, почему произошла ошибка и как решить возникшую проблему. Однако существует некоторая проблема - размер журналов постоянно растет, они занимают все больше и больше места на диске, поэтому необходимо вовремя удалять устаревшие записи, чтобы они не мешали нормальной работе компьютера. Делать это можно вручную или воспользоваться утилитой logrotate.
Утилита logrotate предназначена для автоматизации обработки журналов. Она может выполнять необходимые действия в зависимости от определенных условий и правил соответствия. Например, можно сжимать журналы в архив или отправлять на другой сервер, когда они достигают определенного размера, возраста или других параметров.
Проверку условий можно настроить ежедневно, еженедельно или ежемесячно - это позволяет создать схему ротации логов, удобную именно для вас и вашего сервера.
Logrotate — популярная утилита, поэтому в большинстве дистрибутивов она поставляется по умолчанию.
Вы можете подробнее ознакомиться с возможностью настройки ротации логов при помощи утилиты logrotate, просмотрев наши обучающие видео:
на RuTube — Настройка ротации логов: logrotate;
в Яндекс.Дзен — Настройка ротации логов: logrotate;
в VK Видео — Настройка ротации логов: logrotate.
На наших каналах вы также сможете найти много другой полезной информации.
В дистрибутиве РЕД ОС программа также является предустановленной, поэтому даже установка ОС подробно записывается в журнал:
ls /var/log/anaconda/ anaconda.log journal.log packaging.log X.log dbus.log ks-script-mmizpj2u.log program.log dnf.librepo.log ks-script-z8uq2i_g.log storage.log hawkey.log lvm.log syslog
Все основные настройки программы находятся в файле /etc/logrotate.conf.
Для дополнительных настроек в основном файле указана папка /etc/logrotate.d. Собственные настройки лучше сохранять именно в данном каталоге, так ими будет проще управлять.
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.
Основные параметры для настройки
Чтобы указать частоту выполнения проверок на совпадение условий, используются следующие директивы:
hourly - каждый час;
daily - каждый день;
weekly - каждую неделю;
monthly - каждый месяц;
yearly - каждый год.
По умолчанию настроена еженедельная (weekly) проверка.
Рассмотрим основные параметры управления и обработки журналов:
rotate — указывает, сколько старых логов нужно хранить (в параметрах передается количество);
create — создание пустого файла лога после перемещения старого;
dateext — перед заголовком старого лога добавляется дата ротации;
compress — сжатие логов;
delaycompress — не сжимать последний и предпоследний журнал;
extension — сохранять оригинальный лог-файл после ротации, если у него указано расширение;
mail — отправлять e-mail после завершения ротации;
maxage — выполнять ротацию журналов, если они старше, чем указано;
missingok — не выдавать ошибки, если лог-файла не существует;
olddir — перемещать старые логи в отдельную папку;
postrotate/endscript — выполнить произвольные команды после ротации;
start — номер, с которого будет начинаться нумерация старых логов;
size — размер лога, когда он будет перемещен.
По умолчанию настроено хранение четырех старых файлов журналов, создание нового пустого файла журнала после перемещения старых и использование даты ротации при создании файлов журнала.
Вспомогательные настройки
В каталоге дополнительных настроек /etc/logrotate.d находятся несколько файлов, по названиям и содержимому которых можно определить, к журналам какой программы они относятся:
ls /etc/logrotate.d/ bootlog chrony glusterfs kadmind ppp samba syslog wtmp btmp dnf iscsiuiolog krb5kdc psacct sssd wpa_supplicant yum
В файлах содержатся правила обработки отдельных журналов.
В качестве примера рассмотрим параметры файла конфигурации bootlog:
cat /etc/logrotate.d/bootlog /var/log/boot.log { 1. missingok 2. daily 3. copytruncate 4. rotate 7 5. 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 endscript
Здесь та же структура, но в конфигураторе дополнительно указана команда терминала, заключенная в postrotate
и endscript
. Строки, находящиеся между данными служебными словами, каждое из которых должно находиться в отдельной строке, выполняются с использованием /bin/sh после ротации файла журнала.
Проверка конфигурации
После настройки какого-либо файла конфигурации logrotate желательно проверить его корректность. Для этого необходимо запустить утилиту logrotate с опцией -d, она выведет все, что планируется сделать, но не будет изменять файлы на диске.
Рассмотрим действие утилиты на примере файла /var/log/bootlog:
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: 2022-12-05 07:56 Last rotated at 2022-12-02 00:00 log does not need rotating (log is empty)
Если сообщений об ошибках нет, можно считать, что настройка завершена успешно.
Дата последнего изменения: 06.09.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.