Управление логами с помощью Logrotate на Ubuntu 16
Любая информационная система сохраняет операции и действия в специальных текстовых файлах – логах. Чтобы ИС исправно сохраняла логи, а администраторы могли получить к ним доступ, используют специализированное ПО. В статье расскажем об одной утилите – Logrotate, которая установлена на серверной ОС Ubuntu 16.04.
Предварительная подготовка
Logrotate архивирует лог-файлы в автоматическом режиме по заданным параметрам. Если не сжимать логи и не удалять старые версии, то со временем закончится место на жестком диске. Чтобы избежать подобной ситуации, системные администраторы используют программы.
Прежде, чем настраивать логирование, подключаемся к серверной платформе по SSH и выполняем нижеуказанные действия от имени суперпользователя.
Установка
Подключившись к Ubuntu Server, проверяем наличие программы командой:
Важно! На середину августа 2019 года релиз 3.15.0.
Если вместо ответа в виде цифр, пользователь получает сообщение, что утилита не установлена, то инсталлируем стандартными средствами «Убунту».
Настройка
Стандартная конфигурация Logrotate хранится по двум путям:
1. Файл /etc/logrotate.conf хранит часть конфигураций по умолчанию. Также он содержит шаблоны архивирования для несистемных файлов.
2. Второй путь – /etc/logrotate.d/ предназначен для сохранения сторонних параметров, которые администратор задает самостоятельно. Здесь хранятся шаблоны ротаций для системных утилит (apt, rsyslog, dpkg и др.).
После инсталляции утилита использует стандартный шаблон еженедельной ротации данных. Согласно параметрам архивируются логи, которые относятся к пользователю root и системной группе syslog.
Зайдем во второй файл, который отвечает за системную команду apt, чтобы изучить стандартные параметры.
Внутри расположено два раздела:
Скриншот №1. Содержимое файла.
Как видно, данные хранятся в виде одинаковых блоков условий:
- rotate 12 указывает, что утилита сохраняет последние двенадцать логов;
- вторая строка означает обновление содержимого один раз в месяц;
- compress – команда архивирования, по умолчанию используется стандартная утилита Linux-систем – gzip, если же требуется изменить на другую, то указываем ключи после команды;
- четвертый параметр говорит logrotate о том, чтобы не сохранять сообщение с ошибкой, если лог-файла нет;
- последний параметр отменяет архивацию, если лог пустой.
Если необходим собственный скрипт для ротации, то создаем его в директории /etc/logrotate.d/. Ниже приведем тестовый вариант создания шаблона ротации.
Пример №1
Исходное: существует виртуальный сервер. Необходимо сохранять логи в access.log и error.log. Они находятся в каталоге /var/log/example-app/. На сервере присутствует пользователь www-data и группа с аналогичным именем.
Создаем файл через текстовый редактор.
Вставляем следующие команды в него:
Скриншот №2. Пример файла.
Важно! Если необходима подробная информация о команде, то используем утилита man. Например,
После добавления информации сохраняем изменения. Тестируем результат:
Важно! В рабочем окне терминала отображается информация об операциях, которые в данный момент проводит logrotate.
Пример №2
Исходные данные: Logrotate запущен от учетного имени Sammy. Лог-файлы сохраняются в директорию /home/sammy/logs/. Необходимо настроить архивирование с интервалом каждый час.
Важно! Настройки будут выполняться в другом каталоге, а не в /etc/logrotate.d.
Создаем новую конфигурацию через редактор vi.
В него добавим следующую информацию:
hourly
missingok
rotate 24
compress
create
}
Команды hourly и rotate 24 указывают на то, что архивирование происходит ежечасно. Закрываем файл с сохранением.
Для проверки создадим тестовый файл, в котором будут храниться логи.
mkdir logs
touch logs/access.log
Теперь укажем logrotate новый путь для сохранения информации.
На мониторе после запуска утилиты появится следующее:
Скриншот №3. Результат тестирования.
Для программы логирования – это новый файл.
Для ежечасного запуска утилиты – сконфигурируем планировщик заданий cron. Откроем его:
Внесем последнюю строку в виде:
Сохраняем изменения, закрываем файл.