Управление логами с помощью Logrotate на Ubuntu 16.04

Инструкция по настройке управлением лог-файлами с помощью Logrotate на Ubuntu 16.04.

Что это такое?

Logrotate - это системная утилита, которая управляет автоматической ротацией и сжатием лог-файлов. Если в процессе длительной работы сервера файлы не были ротированы, сжаты и периодически не удалялись, то рано или поздно они могут занять весь доступный объем памяти.

Logrotate устанавливается по умолчанию на Ubuntu 16.04 и настроена для обработки потребности ротации журналов для всех установленных пакетов и приложений, включая rsyslog.

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

Первоначальные требования

Действия в инструкции выполняются от имени пользователя root или с правами sudo.

Подключитесь к виртуальному серверу Ubuntu по протоколу SSH.

Проверка версии Logrotate

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

logrotate --version

Ожидаемый результат:

Если Logrotate не установлена, вы получите сообщение об ошибке. Установить программное обеспечение, можно используя диспетчер пакетов:

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

Настройка Logrotate

Информация о конфигурации Logrotate обычно может быть найдена в двух местах на Ubuntu:

По умолчанию logrotate.conf настроит еженедельную (weekly) ротацию лог-файлов, принадлежащие пользователю root и группе syslog (su root syslog), с сохранением четырех лог-файлов (rotate 4) и новых пустых файлов журнала созданный после того, как текущий обновится (create).

Рассмотрим конфигурационный файл Logrotate /etc/logrotate.d для пакетного менеджера apt:

Содержимое файла:

Этот файл содержит конфигурационные блоки для двух разных файлов журнала в каталоге /var/log/apt/: term.log и history.log. Оба блока имеют одинаковые опции. Любые параметры, не заданные в этих конфигурационных блоках, наследуют значения по умолчанию или значения, установленные в файле /etc/logrotate.conf. Параметры, установленные для журналов apt:

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

man logrotate

Конфигурация примера

Для управления лог-файлами приложений, не настроенных по умолчанию, существует 2 способа:

  1. Создайте новый файл конфигурации Logrotate и поместите его в /etc/logrotate.d/. Созданная конфигурация будет выполняться ежедневно от имени пользователя root вместе со всеми другими стандартными заданиями Logrotate.
  2. Создайте новый файл конфигурации и запустите его за пределами директории Logrotate по умолчанию. Это может быть необходимо, если вам нужно запустить Logrotate в привилегированном режиме, или если вы хотите обновлять логи чаще, чем раз в день.

Примечание: почасовая настройка в файле /etc/logrotate.d/ будет игнорироваться, поскольку утилита запускается в системе только один раз в день.

Создание конфигурации в /etc/logrotate.d/

В качестве примера настроим обновления для вымышленного веб-сервера, который пишет логи в файлы access.log и error.log,расположенные в каталоге /var/log/example-app/. Он работает от имени пользователя www-data и группы www-data.

Для начала создайте новый файл с помощью текстового редактора vi:

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

Описание некоторых директив:

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

В результате будет вызвана утилита logrotate, с указанием на стандартный файл конфигурации в режиме отладки.

В консоль будет выводиться информация, о том какие файлы logrotate обрабатывает в данный момент. Стандартная настройка Logrotate будет выполняться один раз в день, включая новую конфигурацию.

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

В этом примере приложение работает от имени пользователя sammy, генерирующее лог-файлы, которые хранятся в /home/sammy/logs/. Для того чтобы ротировать эти файлы ежечасно, нужно выполнить настройки в каталоге отличном от /etc/logrotate.d.

Создадим файл конфигурации в нашем домашнем каталоге. Откройте его с помощью текстового редактора:

Вставьте следующее содержимое:

Сохраните внесенные изменения. Данная конфигурация будет обновлять файлы ежечасно.

Чтобы проверить настройки, создадим тестовый файл:

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

Ожидаемый вывод:

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

Ожидаем результат:

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

crontab -e

В конец открывшегося файла добавьте следующую строку:

Созданная запись соответствует задаче, которая будет выполняться на 15-й минуте ежечасно. Сохраните изменения и закройте файл.

На этом инструкция по управлению лог-файлами закончена.

 

Ознакомиться с другими инструкциями вы можете на нашем сайте. А чтобы попробовать услугу — кликните на кнопку ниже.

Последнее обновление: 28.05.2023