Как ротировать журналы с помощью Logrotate в Linux

Когда приложение в среде операционной системы Linux запущено, инициируются фоновые процессы, связанные с этим приложением. События, связанные с выполнением этих приложений, записываются в файл журнала (создаваемый приложениями и/или фоновыми процессами).

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

Для системы Linux, в которой не запущено слишком много приложений, файлы журналов можно легко и вручную обрезать по расписанию. Однако такой подход к управлению лог-файлами не применим для корпоративных/производственных Linux-систем. Logrotate позаботится об автоматической ротации и сжатии растущих файлов журналов, чтобы обеспечить экономию доступного дискового пространства системы.

В этой статье мы рассмотрим установку и базовое использование утилиты Logrotate для управления файлами журналов в системе Linux.

Как установить Logrotate в Linux

Утилита управления файлами журналов Logrotate предустановлена в основных дистрибутивах Linux. Если она не установлена в вашей системе Linux, воспользуйтесь следующими инструкциями по установке.

Debian, Ubuntu и Mint

RHEL, CentOS, Fedora и Rocky Linux, AlmaLinux

Gentoo Linux

Arch Linux

OpenSUSE

Понимание конфигурации Logrotate

Основной конфигурационный файл Logrotate хранит информацию о ротации журналов по умолчанию и другие настройки.

/etc/logrotate.conf

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

ls -l /etc/logrotate.d

Например, исходя из приведенного выше снимка экрана, мы можем просмотреть информацию о файле конфигурации Logrotate менеджера пакетов dnf следующим образом:

/etc/logrotate.d/dnf

Исходя из вышеприведенного результата, представлены два различных файла журнала (term.log и history.log).

  • Опция rotate 4 обеспечивает сохранение 4 старых файлов журнала.
  • опция weekly обеспечивает ротацию журналов раз в неделю.
  • опция missingok не ассоциирует сообщение об ошибке с отсутствующим файлом журнала.
  • параметр notifempty гарантирует, что пустые файлы журналов не будут ротироваться.

Создание конфигурационного файла Logrotate

Здесь мы рассмотрим два сценария:

Добавление файла конфигурации в каталог /etc/logrotate.d/

Предположим, что в нашей системе установлено вымышленное приложение веб-сервера под названием sample-app, и мы хотим настроить его ротацию журналов. Сначала мы создадим новый файл конфигурации журнала в каталоге /etc/logrotate.d.

Вот пример конфигурационного файла, который может обрабатывать эти журналы:

Затем создайте каталог журнала.

После завершения ротации журнала создается новый файл журнала с разрешением 0640 для владельца www-data и группы www-data. Флаг sharedscripts гарантирует, что последующие скрипты будут выполняться один раз за выполнение.

Сценарий внутри блока postrotate to endscript выполняется после успешного вращения журнала и перед сжатием сгенерированных журналов.

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

logrotate /etc/logrotate.conf --debug

Несмотря на то, что приложение не существует, Logrotate смог оценить состояние его конфигурационного файла. В описанном выше случае сгенерированные и сжатые журналы должны храниться в /var/log/sample-app.

Создание независимой конфигурации Logrotate

Приложение может быть запущено от имени нашего системного пользователя, например, user. Можно предположить, что генерируемые им журналы хранятся в каталоге /home/user/logs/.

Конфигурационный файл Logrotate должен находиться в каталоге Home:

Затем вставьте следующую конфигурацию:

Вышеуказанные журналы будут генерироваться ежечасно.

Давайте создадим соответствующий каталог журналов.

Пора протестировать:

logrotate /home/user/logrotate.conf --state /home/user/logrotate-state --verbose

Параметр --verbose подробно описывает действия, связанные с Logrotate. В приведенной выше установке ничего не вращалось, поскольку Logrotate видит файл впервые. Однако в файле состояния Logrotate будет записана информация о запуске.

Показать информацию Logrotate

Чтобы настроить Logrotate на автоматический ежечасный запуск для текущего пользователя системы, откройте crontab пользователя:

добавьте следующую запись в кронтаб пользователя.

Примерно через час каталог $HOME/logs должен быть заполнен ротированным и сжатым файлом журнала.

Заключение

Теперь мы должны уметь настраивать и вращать файлы журналов для пользователей с правами root и не root с помощью Logrotate в Linux.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий