Статья также доступна на украинском (перейти к просмотру).
Организация правильного и всеобъемлющего логирования работы операционной системы и основного ПО сервера важная задача, с которой сталкивается каждый системный администратор. Логи это основной источник информации для формирования метрик работы сервера, поиска причин сбоев и уязвимостей. Высоконагруженные системы пишут логи очень активно, поэтому необходим механизм ротации и управления журналами. Одним из базовых инструментов является Logrotate, о нем и пойдет речь в этой статье.
Оглавление
- Организация управления файлами журналов в Ubuntu
- Настройка автоматической ротации журналов для отдельных процессов
- Настройка управления логами для отдельного пользователя
Организация управления файлами журналов в Ubuntu
При запуске любого из многочисленных процессов операционной системы Ubuntu создается журнал для фиксации всех изменений, происходящих во время работы программы. Эти журналы необходимо периодически изменять на новые, а уже заполненные, архивировать и помещать в соответствующие места на диске. То есть, можно выделить несколько основных операций над указанными данными:
- Внесение записей в соответствующий журнальчик;
- Контроль уровня заполняемости;
- Создание нового журнальчика;
- Архивирование заполненного;
- Перемещение архива.
Для выполнения указанных операций предусмотрено использование специального программного обеспечения (ПО), в частности программу LogRotate. Для основных дистрибутивов Linux эта программа устанавливается автоматически и выполняет свои задачи без вмешательства Администратора. Для организации правильной работы программы предусмотрено наличие определенной среды и настроек, которые «указывают» программе, как именно она должна работать. К первому уровню такой среды, в частности, относится главный конфигурационный файл /etc/logrotate.conf, в котором прописаны общие операции, которые программа должна выполнять над данными любого процесса.
Второй уровень среды для работы LogRotate образуют конфигурационные файлы для каждого из основных системных процессов, таких, например, как apt, bootlog, wtmp и других. Эти файлы находятся в специальном системном каталоге /etc/logrotate.d и имеют названия, согласно названиям системных процессов. Таким образом, этот уровень более детализирован, имеет более высокий уровень приоритетности и касается отдельно каждого из процессов.Второй уровень среды для работы LogRotate образуют конфигурационные файлы для каждого из основных системных процессов, таких, например, как apt, bootlog, wtmp и других. Эти файлы находятся в специальном системном каталоге /etc/logrotate.d и имеют названия, согласно названиям системных процессов. Таким образом, этот уровень более детализирован, имеет более высокий уровень приоритетности и касается отдельно каждого из процессов. Конечно, можно внести изменения в любой из конфигурационных файлов любого процесса и скорректировать работу программы LogRotate. Более того, можно создать по своему усмотрению файл конфигурации для любого процесса и поместить его в указанный системный каталог. В этом случае файлы журналов будут храниться в каталоге /var/log/new-app, где new-app – название нового процесса. Конечно, можно внести изменения в любой из конфигурационных файлов любого процесса и скорректировать работу программы LogRotate. Более того, можно создать по своему усмотрению файл конфигурации для любого процесса и поместить его в указанный системный каталог. В этом случае файлы журналов будут храниться в каталоге /var/log/new-app, где new-app – название нового процесса.
Третий уровень работы программы LogRotate обусловлен наличием конфигурационных файлов и настройками для отдельного пользователя системы. В таком случае главный файл среды будет находиться в домашнем каталоге определенного пользователя по адресу /home/user/logrotate.conf, где user – логин пользователя. А файлы журналов будут храниться по адресу /home/user/logs и иметь расширение .log. Но такая среда должна быть подготовлена ??администратором системы, иначе программа LogRotate будет принимать во внимание только первые два уровня программной среды, которые в большинстве своем настраиваются самой ОС Ubuntu.
Настройка автоматической ротации журналов для отдельных процессов
Сначала просмотрим номер версии установленной программы LogRotate и дополнительную информацию о ней. Для этого введем в терминале команду:
$ logrotate --version
Итак, версия программы – 3.14.0. Теперь посмотрим дату создания главного файла конфигурации и установленные для него права доступа:
$ ls -l /etc/logrotate.conf
Файл создан 21 января 2019 года. Просмотрим содержимое файла с помощью соответствующей команды:
$ cat /etc/logrotate.conf
Мы можем убедиться, что здесь действительно указаны общие операции, одинаковые для всех процессов.
Теперь посмотрим содержимое системного каталога logrotate.d, в котором хранятся стандартные конфигурационные файлы для всех системных процессов:
$ ls -l /etc/logrotate.d
Здесь также отображена дата их создания и права доступа. Теперь, например, рассмотрим содержимое файла конфигурации для сервиса ufw. Это инструментарий для отладки и управления брандмауэром (Uncomplicated Firewall) в ОС Ubuntu и Debian. Введем в терминале:
$ cat /etc/logrotate.d/ufw
Кроме набора параметров для работы LogRotate, здесь также указан путь к месту сохранения файлов журналов, или логов - /var/log/ufw.log.
Наладим автоматическую ротацию для нашего процесса под названием new-app. Для этого нам нужно будет выполнить следующие действия:
- Cоздать файл конфигурации для процесса в системном каталоге logrotate.d;
- Cоздать каталог для сохранения файлов журналов;
- Протестовать созданную среду и убедиться, что она работает
Создание конфигурационного файла для new-app. Создадим файл конфигурации нового процесса с помощью текстового редактора. Файл содержит требуемый набор параметров, а также путь к хранению файлов журналов. Текст будет выглядеть следующим образом:
/var/log/new-app/*.log { daily missingok rotate 3 compress notifempty create 0640 www-data www-data sharedscripts postrotate systemctl reload new-app endscript }
Команда для виклику редактора:
$ sudo nano /etc/logrotate.d/new-app
После внесения изменений сохраним файл с помощью клавиш ctrl+O. Таким образом, в файле конфигурации мы указали, что в каталоге может храниться не более трех старых журналов (параметр rotate); файлы должны архивироваться (параметр compress); новые файлы должны создаваться с правами доступа 0640 (параметр create). Скрипт, ограниченный командами postrotate и endscript, указывает на то, что при обновлении системы процесс new-app будет автоматически перезагружаться.
Тестирование создаваемой среды для процесса new-app. Используем команду
$ mkdir /var/log/new-app
Тестирование создаваемой среды для процесса new-app. Используем команду logrotate з ключем --debug:
$ sudo logrotate /etc/logrotate.conf --debug
На изображении видно, что в системном каталоге logrotate.d появился новый сервис new-app, который мы создали. Ниже можно посмотреть результат его обработки командой, где, в частности, указано, что пустой файл не спасается.
Завершающее окно вывода команды выглядит следующим образом:
Настройка управления логами для отдельного пользователя
Порядок действий будет подобен предыдущему варианту, за исключением того, что здесь необходимо настраивать задачи cron для запуска программы LogRotate.
Создадим файл конфигурации пользовательской системы с именем new_user и введем в него следующий текст:
/home/new_user/logs/*.log { hourly missingok rotate 24 compress create }
Запустим редактор и внесем изменения, после чего закроем его (ctrl+O):
$ nano /home/new_user/logrotate.conf
Создадим каталог для хранения журналов, а также файл журнала access.log:
$ mkdir /home/new_user/logs $ touch /home/new_user/logs/access.log
Протестуем созданную среду и убедимся, что все отлажено:
$ logrotate /home/new_user/logrotate.conf --state /home/new_user/logrotate-state –verbose
Параметр --verbose детализирует действия, связанные с программой Logrotate.
Просмотрим содержимое файла состояний logrotate-state:
$ cat /home/new_user/logrotate-state
Можно убедиться, что в указанном файле фиксируется информация о времени запуска процесса.
С помощью сервиса cron настроим задачу для автоматического ежедневного запуска программы Logrotate для текущего системного пользователя:
$ crontab –e
Затем откроется окно редактора, установленного по умолчанию, с файлом настроек задач. Добавим к нему строчку:
12 * * * * /usr/sbin/logrotate /home/new_user/logrotate.conf --state /home/new_user/logrotate-state
и сохраним изменения (ctrl+O). Указанная строка настраивает cron на запуск задания на 12 минуте каждого времени суток.
Дата-центр FREEhost.UA предлагает выделенные сервера различных конфигураций по самым выгодным ценам в Украине. Наши услуги включают базовое администрирование 24/7. Все сервера есть в наличие и могут быть поставлены на протяжении нескольких часов. Приглашаем к использованию.
Подписывайтесь на наш телеграмм-канал t.me/freehostua, чтобы быть в курсе новых полезных материалов. Смотрите наш канал YouTube на youtube.com/freehostua.
Мы в чем ошиблись, или что-то пропустили?
Напишите Об этом в комментариях, мы с удовольствием ответим и обсуждаем Ваши замечания и предложения.
Дата: 11.08.2022 Автор: Евгений
|
|
Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:
comments powered by Disqus