Настройка logrotate Centos 7

Обновлено: 22.11.2024

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

Эти журналы требуют управления, так как они со временем увеличиваются в размерах, что не только затрудняет их анализ, но и занимает место на диске в системе. Если их не остановить, они могут увеличиться до гигабайтного размера (это правда, не врут). Поэтому для управления журналами и их проверки мы используем утилиту logrotate на компьютерах с Linux.

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

В этом руководстве мы научимся устанавливать logrotate в различных дистрибутивах Linux, таких как RHEL/CentOS, Fedora, Ubuntu/Debian, а затем обсудим некоторые конфигурации, которые можно использовать с logrotate.''

Установка

В большинстве дистрибутивов Linux logrotate устанавливается по умолчанию, но если это не так, его можно легко установить с помощью диспетчера пакетов по умолчанию для дистрибутива, поскольку он доступен в репозиториях по умолчанию. Установите его в различных дистрибутивах Linux, используя следующие команды:

RHEL/CentOS

Дебиан/Убунту

Федора

Конфигурация

Основной файл конфигурации для logrotate находится в папке '/etc/logrotate.conf', но мы также можем создать конфигурацию для каждой службы отдельно в папке '/etc/logrotate.d/'. Мы не будем использовать основной файл конфигурации, но вы можете использовать его для справки, единственное, что нам нужно сделать, это убедиться, что файл конфигурации должен содержать следующий параметр,

включить /etc/logrotate.d

Если его нет, сделайте запись и сохраните файл. Теперь мы возьмем пример и будем чередовать журналы для веб-сервера, установленного в папке «/data/apache2/».

Сначала создайте новый файл для ротации логов в папке '/etc/logrotate.d' с любым именем, например 'apache',

& сделайте следующие записи в файл,

ежедневно

отсутствует

повернуть на 50

уведомление пусто

сжатие задержки

общие сценарии

постротировать

sudo /data/apache2/bin/apachectl -k изящный >> /dev/null

эндскрипт

Здесь мы чередуем все журналы из каталога '/data/apache/logs',

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

'missingok' означает, что ошибки не должны записываться в журналы,

тогда мы сохраним последние 50 журналов с помощью "rotate",

'notifempty' означает, что журналы не должны меняться, если они пусты,

delaycompress активен, архивный журнал сжимается при следующей ротации журнала. Мы также можем использовать «nocompress» и «compress»,

Команда postrotate сообщает logrotate, что скрипт, который нужно запустить, начинается со следующей строки, а команда endscript говорит, что скрипт выполнен,

sharedscript указывает logrotate проверять все журналы для этого блока конфигурации перед запуском сценария postrotate

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

размер 100 КБ

размер 100M

размер 100G

После создания файла сохраните его. По умолчанию logrotate автоматически настраивает ежедневное выполнение задания cron. Вы можете проверить то же самое в '/etc/cron.daily/logrotate'.

Чтобы убедиться, что logrotate работает нормально и без проблем, или отладить конфигурацию logrotate, выполните в терминале следующую команду:

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

На этом мы заканчиваем наше руководство по установке и использованию logrotate. Пожалуйста, не стесняйтесь присылать свои предложения и вопросы в поле для комментариев ниже.

Если вы считаете, что мы помогли вам или просто хотите поддержать нас, обратите внимание на следующее:-

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

Опубликовано: 8 апреля 2020 г. | Эдем Афеньо

Дополнительные ресурсы по Linux

Представьте, какой была бы жизнь, если бы несколько минут назад критически важный сервис вышел из строя, и вас вызвали бы, чтобы спасти положение. Вы пытаетесь перезапустить службу, и она просто не дает.Сообщений об ошибках нет, но, что более важно, нет следов того, что он делал перед тем, как решил умереть. Сто и один вызывает курс в вашем уме, и вы понимаете, что нет никакого способа узнать, в каком направлении идти. Может быть, вы могли бы перезапустить сервер вообще. Просто может быть.

Это один из многих сценариев, в которых вам может помочь ведение журнала. Обычно работающая часть программного обеспечения хранит запись важных действий, связанных с ее работой, для потомков в файле. Все что угодно может быть сохранено в файле журнала, поскольку это помогает разработчикам и системным администраторам узнать, что произошло с конкретной частью программного обеспечения постфактум. Файлы журналов также используются лицами, ориентированными на безопасность, для проверки доступа к определенным ресурсам. В сети или при обмене сообщениями в файлах журнала записывается время отправки или получения сообщений для дальнейшего использования.

Файлы журналов по определению продолжают увеличиваться в размере в зависимости от частоты и детализации, с которой они обновляются. Чтобы служить своей цели, они обычно открываются в режиме добавления и содержат временные метки, помогающие при устранении неполадок и криминалистике. Однако это создает проблему, поскольку большие размеры файлов делают работу с файлами журналов громоздким процессом как для системы, так и для человека-рецензента. Журналы ротируются, чтобы файлы журналов оставались надежными. Проще говоря, новый файл открывается, а старый закрывается и либо сохраняется, либо удаляется в зависимости от предпочтений дизайна. Это не позволяет журналам заполнять целые разделы и при этом ставить системы на колени. Возможно, вы заметили ротацию журналов в системе поблизости. Посмотрите на даты в файлах boot.log.

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

Вход в систему Linux (rsyslogd)

Как и следовало ожидать, ведение журнала в системах Linux, таких как сервер CentOS 7, который я использую для иллюстрации, зависит от демона для облегчения ведения журнала. Rsyslogd — это имя надежного старого сервиса с открытым исходным кодом. На самом деле он не такой уж и старый. Это улучшенная версия исходного демона системного журнала, обладающая способностью быстро обрабатывать и пересылать журналы в любое место в IP-сети. Помимо syslog и rsyslog, есть syslog-ng, еще один демон для обработки журналов. Обработчик журнала по умолчанию зависит от выбранного дистрибутива. Rsyslog входит в состав многих дистрибутивов на базе Red Hat по умолчанию. Выполните следующую команду, чтобы проверить ее наличие и версию в вашей системе:

Поскольку это демон, вы можете проверить его активность с помощью systemd следующим образом:

Если по какой-либо причине он не запущен, вы можете запустить его через systemd .

[ Примечание редактора: многие новые системы заменили rsyslogd на journald для ведения журналов. Вы можете выбрать любой вариант или даже оба, чтобы справиться с вашими потребностями в ведении журнала. Дополнительные сведения см. в документации к вашему дистрибутиву. В этой статье предполагается, что вы используете rsyslogd.]

Logrotate — это утилита Linux, основной функцией которой является — подождите — ротация журналов. Если он не установлен как часть установки ОС по умолчанию, его можно установить, просто выполнив:

Двоичный файл может находиться в /bin/logrotate .

При установке logrotate новый файл конфигурации помещается в каталог /etc/ для управления общим поведением утилиты при ее запуске. Кроме того, создается папка для файлов конфигурации оснастки конкретной службы для индивидуальных запросов на ротацию журналов. Подробнее об этом чуть позже.

Ежедневно запускается задание cron, которое запускает утилиту. Это достигается помещением вызова утилиты в стандартную папку cron для ежедневных заданий. Хотя особенности вызова выходят за рамки этой статьи, достаточно сказать, что вызов — это просто сценарий Bash, который запускает двоичный файл logrotate, сообщая системе, что делать в случае ошибки.

Стандартное расположение файла журнала

Журналы в системе Linux можно размещать в любом месте, разрешенном разрешениями.Однако из-за того, что они постоянно меняются по размеру и содержанию, по определению иерархия файловой системы предписывает хранить их в каталоге /var/log/.

Снимок экрана ниже показывает содержимое моего каталога /var/log.

Файлы конфигурации и примеры

/etc/logrotate.conf

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

Ниже приведен образец содержимого файла конфигурации.

Кроме того, есть директива для включения определенной папки: /etc/logrotate.d . Эта папка используется для запросов ротации журналов для конкретных пакетов. Пакеты, предназначенные для использования преимуществ logrotate, помещают файлы конфигурации в этот каталог. Эта модульность соответствует духу Linux и повышает расширяемость утилиты. Файлы конфигурации содержат аналогичные директивы и пользовательские файлы журналов, где это применимо. Вы также можете создать свой собственный файл конфигурации для обработки любого файла журнала по вашему выбору. Просто дайте файлу имя, добавьте файл журнала для обработки и поместите его в этот каталог. Наконец, есть директивы для файлов журналов без пакетов-владельцев, таких как wtmp и другие файлы системных журналов. Страница руководства заполнена дополнительными директивами, и пользователям, у которых есть более конкретные потребности в ротации, я настоятельно рекомендую вам взглянуть на нее.

/etc/logrotate.d

К счастью, я много говорил о каталоге /etc/logrotate.d, поэтому без лишних слов позвольте мне показать вам содержимое этого каталога, чтобы донести идеи, которыми вы делились ранее, домой.

И на всякий случай давайте взглянем на файл конфигурации Samba.

Можете ли вы заметить, насколько он похож на logrotate.conf? Прежде чем я закончу эту работу, давайте пробежимся по некоторым директивам в этом файле:

/var/log/samba/* — файл журнала для ротации. В данном случае это каждый файл журнала в каталоге журнала Samba.

notifempty — директива, указывающая, что файл не следует вращать, если он пуст.

olddir /var/log/samba/old — место для хранения старых журналов ротации.

missingok – не позволяет logrotate выдавать ошибку, если файл журнала отсутствует.

copytruncate — не закрывать файл журнала. Сделайте копию, которая будет повернутым, переименованным файлом, а затем обрежьте файл журнала до нулевого размера

Можете ли вы догадаться, что делает директива sharedscripts? Не нужно гадать — обратитесь к справочной странице.

Надеюсь, этого достаточно, чтобы начать управлять журналами. Logrotate — это простая, но мощная утилита ротации с открытым исходным кодом. До следующего поста, удачной ротации!

В этой статье я покажу вам 6 простых шагов по настройке и управлению ротацией журналов с помощью logrotate в Linux (RHEL/CentOS 7/8). Как вы, возможно, знаете, серверы на базе Linux имеют зарезервированное место под названием /var/log для всех файлов журналов, которые генерируются приложениями и процессами. Таким образом, чтобы убедиться, что файлы журналов не просто занимают все дисковое пространство, необходимо иметь какое-либо управление журналами для удаления старых файлов журналов после того, как они превысят некоторый пороговый размер. Эту функцию можно легко реализовать с помощью функции ротации журналов.

Logrotate — это инструмент, который можно использовать для настройки функции ротации журналов для различных приложений в зависимости от размера журнала и других важных параметров. Он также может сжимать журналы в зависимости от определенных условий, а также может использоваться для удаления старых файлов журналов. Общая конфигурация может быть помещена в файл /etc/logrotate.conf, но если требуется определенная конфигурация для определенных журналов приложений, ее можно поместить через файл .conf или имя файла приложения по пути /etc/logrotate.d.

Простые шаги по настройке и управлению ротацией журналов с помощью logrotate в Linux

Шаг 1. Предварительные условия

a) У вас должна быть работающая система RHEL/CentOS 7/8.

b) На вашем сервере должен быть установлен инструмент yum. Вы можете просмотреть 22 лучших примера команд YUM в RedHat/CentOS 7, чтобы узнать больше о команде yum.

c) У вас должен быть доступ root или sudo для запуска привилегированных команд. Пожалуйста, ознакомьтесь с разделом «Как добавить пользователя в Sudoers», чтобы узнать больше о предоставлении пользователю доступа к sudo.

Шаг 2. Обновите сервер

Если вы недавно не обновляли свой сервер Linux, вам необходимо сначала обновить сервер с помощью команды yum update -y, как показано ниже. Поскольку в этом случае на сервере Linux уже установлены последние обновления, он не находит новых обновлений для установки.

Шаг 3. Установите Logrotate в Linux

Чтобы установить пакет logrotate из включенного репозитория, вам необходимо использовать команду yum install logrotate -y, как показано ниже. Это загрузит и установит пакет logrotate вместе с его зависимостями.

Шаг 4. Проверьте версию Logrotate

Шаг 5. Настройте Logrotate в Linux

Конфигурацию ротации журналов можно проверить и установить в файле /etc/logrotate.conf, как показано ниже.

ежедневно: файлы журналов меняются каждый день. Подробнее о man-странице logrotate.

rotate . Файлы журнала чередуются количество раз, прежде чем они будут удалены или отправлены по почте на адрес, указанный в почтовой директиве.

размер: файлы журналов ротируются только в том случае, если они превышают размер в байтах. Подробнее о man-странице logrotate.

missingok : если файл журнала отсутствует, перейдите к следующему без выдачи сообщения об ошибке.

notifempty : не сменять журнал, если он пуст (это переопределяет параметр ifempty). Подробнее о man-странице logrotate.

sharedscripts : этот параметр запускает сценарии только один раз, независимо от того, сколько журналов соответствует шаблону с подстановочными знаками, и им передается весь шаблон. Подробнее о man-странице logrotate.

delaycompress : отложить сжатие предыдущего файла журнала до следующего цикла ротации. Подробнее о man-странице logrotate.

-d : включает режим отладки и подразумевает -v.

Шаг 6. Удалите Logrotate в Linux

После завершения работы с пакетом logrotate его можно удалить, просто используя команду yum remove logrotate -y, как показано ниже.

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

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

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

Вывод команды будет

Конфигурация Logrotate по умолчанию хранится по двум путям:

  • Основной файл конфигурации — /etc/logrotate.conf.
  • Чтобы создать настройки для отдельных журналов, используйте каталог /etc/logrotate.d

Давайте посмотрим на файл конфигурации Logrotate /etc/logrotate.d:

Вывод команды будет

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

Основные директивы по управлению и обработке журналов:

  • ежемесячно - ротация раз в месяц. Возможные варианты ежедневно, еженедельно, ежемесячно, размер;
  • notifempty – не выполнять ротацию пустого файла журнала.
  • rotate — указывает, сколько старых журналов хранить, число передается в параметрах;
  • create — указывает, что вы должны создать пустой файл журнала после перемещения старого;
  • datetext — добавляет дату ротации перед старым заголовком журнала;
  • сжать — указывает, что журнал должен быть сжат;
  • delaycompress — не сжимает последний и предпоследний логи;
  • расширение — сохраняет исходный файл журнала после ротации, если он имеет указанное расширение;
  • mail – отправить электронное письмо после ротации;
  • maxage — ротация журналов, если они старше указанного;
  • missingok — не выводить ошибки, если лог-файл не существует;
  • olddir — переместить старые журналы в отдельную папку;
  • postrotate/endscript — выполнять случайные команды после поворота;
  • start - номер, с которого вы будете начинать нумерацию старых журналов;
  • size - размер журнала при его перемещении;

Для управления файлами журналов приложений можно использовать два варианта:

  • Создайте новый файл конфигурации Logrotate и поместите его в /etc/logrotate.d/. Он будет выполняться ежедневно от имени пользователя root вместе со всеми другими стандартными задачами LogRotate.
  • Создайте новый файл конфигурации и запустите его с настройками LogRotate по умолчанию в Ubuntu

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

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

Чтобы добавить каталог конфигурации /etc/logrotate.d/, откройте новый файл:

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

  • создать 0640 www-data www-data — эта команда создаст новый пустой файл журнала после ротации с указанными разрешениями (0640), владельцем (www-data) и группами (www-data);
  • sharedscripts — этот параметр означает, что любые сценарии, добавленные в конфигурацию, будут выполняться только один раз за один запуск после сжатия файлов, а не для каждого отдельного обновленного файла. Поскольку наша конфигурация будет соответствовать двум файлам журнала (access.log и error.log), сценарий, указанный в postrotate, будет запущен только один раз;
  • postrotate to endscript — скрипт в этом блоке будет запущен после обновления лог-файла. В примере приложение перезагружается

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

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

После этого вы можете проверить, что вы создали:

Создать конфигурацию LogRotate

В этом примере у нас есть приложение, которое запускается под пользовательским тестированием, создавая журналы, которые хранятся в каталоге /home/testing/logs/. Нам нужно, чтобы эти журналы менялись ежечасно, поэтому нам нужно установить его вне структуры /etc/logrotate.d, представленной в Ubuntu.

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

Затем вставьте следующую конфигурацию:

Сохраните и закройте файл

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

Необходимо настроить конфигурацию в соответствии с вашим приложением.

Давайте создадим лог-файл, чтобы убедиться, что он работает:

Поскольку журналы относятся к тестированию, нам не нужно использовать sudo. Однако нам нужно указать файл состояния. Этот файл записывает, что logrotate видел и делал в прошлый раз, поэтому он знает, что делать при следующем запуске

Для этого примера мы попросим Logrotate поместить файл состояния непосредственно в наш домашний каталог. Можем указать где угодно, что доступно и удобно:

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

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

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

Если вы хотите заставить LogRotate ротировать файл журнала, вы должны использовать флаг -force:

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

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

Читайте также: