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

Любая информационная система сохраняет операции и действия в специальных текстовых файлах – логах. Чтобы ИС исправно сохраняла логи, а администраторы могли получить к ним доступ, используют специализированное ПО. В статье расскажем об одной утилите – Logrotate, которая установлена на серверной ОС Ubuntu 16.04.

Предварительная подготовка

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

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

Установка

Подключившись к Ubuntu Server, проверяем наличие программы командой:

logrotate -- version

Важно! На середину августа 2019 года релиз 3.15.0.

Если вместо ответа в виде цифр, пользователь получает сообщение, что утилита не установлена, то инсталлируем стандартными средствами «Убунту».

Настройка

Стандартная конфигурация Logrotate хранится по двум путям:

1. Файл /etc/logrotate.conf хранит часть конфигураций по умолчанию. Также он содержит шаблоны архивирования для несистемных файлов.

2. Второй путь – /etc/logrotate.d/ предназначен для сохранения сторонних параметров, которые администратор задает самостоятельно. Здесь хранятся шаблоны ротаций для системных утилит (apt, rsyslog, dpkg и др.).

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

Зайдем во второй файл, который отвечает за системную команду apt, чтобы изучить стандартные параметры.

cat /etc/logrotate.d/apt

Внутри расположено два раздела:

Как видно, данные хранятся в виде одинаковых блоков условий:

  • rotate 12 указывает, что утилита сохраняет последние двенадцать логов;
  • вторая строка означает обновление содержимого один раз в месяц;
  • compress – команда архивирования, по умолчанию используется стандартная утилита Linux-систем – gzip, если же требуется изменить на другую, то указываем ключи после команды;
  • четвертый параметр говорит logrotate о том, чтобы не сохранять сообщение с ошибкой, если лог-файла нет;
  • последний параметр отменяет архивацию, если лог пустой.

Если необходим собственный скрипт для ротации, то создаем его в директории /etc/logrotate.d/. Ниже приведем тестовый вариант создания шаблона ротации.

Пример №1

Исходное: существует виртуальный сервер. Необходимо сохранять логи в access.log и error.log. Они находятся в каталоге /var/log/example-app/. На сервере присутствует пользователь www-data и группа с аналогичным именем.

1. Создаем файл через текстовый редактор.

sudo vi /etc/logrotate.d/example-app

2. Вставляем следующие команды в него.

Важно! Если необходима подробная информация о команде, то используем утилита man. Например,

man logrotate

3. После добавления информации сохраняем изменения. Тестируем результат:

sudo logrotate /etc/logrotate.conf –debug

Важно! В рабочем окне терминала отображается информация об операциях, которые в данный момент проводит logrotate.

Пример №2

Исходные данные: Logrotate запущен от учетного имени Sammy. Лог-файлы сохраняются в директорию /home/sammy/logs/. Необходимо настроить архивирование с интервалом каждый час.

Важно! Настройки будут выполняться в другом каталоге, а не в /etc/logrotate.d.

1. Создаем новую конфигурацию через редактор vi.

vi /home/sammy/logrotate.conf

В него добавим следующую информацию:

/home/sammy/logs/*.log {
hourly
missingok
rotate 24
compress
create
}

Команды hourly и rotate 24 указывают на то, что архивирование происходит ежечасно. Закрываем файл с сохранением.

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

cd ~
mkdir logs
touch logs/access.log

3. Теперь укажем logrotate новый путь для сохранения информации.

logrotate /home/sammy/logrotate.conf --state /home/sammy/logrotate-state –verbose

4. На мониторе после запуска утилиты появится следующее.

Для программы логирования – это новый файл.

5. Для ежечасного запуска утилиты – сконфигурируем планировщик заданий cron. Откроем его:

crontab –e

Внесем последнюю строку в виде:

15 * * * * /usr/sbin/logrotate /home/sammy/logrotate.conf --state /home/sammy/logrotate-state

Сохраняем изменения, закрываем файл.