Управление логами с помощью 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
Внутри расположено два раздела:
Скриншот №1. Содержимое файла.
Как видно, данные хранятся в виде одинаковых блоков условий:
- rotate 12 указывает, что утилита сохраняет последние двенадцать логов;
- вторая строка означает обновление содержимого один раз в месяц;
- compress – команда архивирования, по умолчанию используется стандартная утилита Linux-систем – gzip, если же требуется изменить на другую, то указываем ключи после команды;
- четвертый параметр говорит logrotate о том, чтобы не сохранять сообщение с ошибкой, если лог-файла нет;
- последний параметр отменяет архивацию, если лог пустой.
Если необходим собственный скрипт для ротации, то создаем его в директории /etc/logrotate.d/. Ниже приведем тестовый вариант создания шаблона ротации.
Пример №1
Исходное: существует виртуальный сервер. Необходимо сохранять логи в access.log и error.log. Они находятся в каталоге /var/log/example-app/. На сервере присутствует пользователь www-data и группа с аналогичным именем.
Создаем файл через текстовый редактор.
sudo vi /etc/logrotate.d/example-app
Вставляем следующие команды в него:
Скриншот №2. Пример файла.
Важно! Если необходима подробная информация о команде, то используем утилита man. Например,
man logrotate
После добавления информации сохраняем изменения. Тестируем результат:
sudo logrotate /etc/logrotate.conf –debug
Важно! В рабочем окне терминала отображается информация об операциях, которые в данный момент проводит logrotate.
Пример №2
Исходные данные: Logrotate запущен от учетного имени Sammy. Лог-файлы сохраняются в директорию /home/sammy/logs/. Необходимо настроить архивирование с интервалом каждый час.
Важно! Настройки будут выполняться в другом каталоге, а не в /etc/logrotate.d.
Создаем новую конфигурацию через редактор vi.
vi /home/sammy/logrotate.conf
В него добавим следующую информацию:
/home/sammy/logs/*.log {
hourly
missingok
rotate 24
compress
create
}
Команды hourly и rotate 24 указывают на то, что архивирование происходит ежечасно. Закрываем файл с сохранением.
Для проверки создадим тестовый файл, в котором будут храниться логи.
cd ~
mkdir logs
touch logs/access.log
Теперь укажем logrotate новый путь для сохранения информации.
logrotate /home/sammy/logrotate.conf --state /home/sammy/logrotate-state –verbose
На мониторе после запуска утилиты появится следующее:
Скриншот №3. Результат тестирования.
Для программы логирования – это новый файл.
Для ежечасного запуска утилиты – сконфигурируем планировщик заданий cron. Откроем его:
crontab –e
Внесем последнюю строку в виде:
15 * * * * /usr/sbin/logrotate /home/sammy/logrotate.conf --state /home/sammy/logrotate-state
Сохраняем изменения, закрываем файл.