Если вы продолжительное время управляете сервером Linux, вы знакомы с проблемой файлов журналов. Иногда они могут быть достаточно сложными, чтобы даже найти их, а затем вы иногда сталкиваетесь с файлом размером в сотни МБ (или даже с ГБ). Поиск через это — боль, и они могут в конечном итоге даже начать съедать Ваше пространство для хранения.
В этой статье вы узнаете, как справиться с этой проблемой. Мы собираемся использовать встроенный пакет Linux для системных журналов, который уже существуют. Это означает, что вам не нужно устанавливать новые пакеты! Все, что вам нужно знать, — это добавить конфигурацию для собственных файлов журналов.
Как журналы Linux вращаются с помощью logrotate
Существует несколько файлов системных журналов в следующем месте:
/var/log/
На скриншоте ниже мы перечислим все файлы в этом каталоге и покажим размер файла в МБ:
Как вы можете видеть, есть много больших файлов журналов, которые проставлены с датой. Они генерируются по умолчанию «logrotate». Посмотрев на отметки времени, мы видим, что они генерируются раз в семь дней. Поэтому для каждого файла журнала здесь logrotate выполняет следующие действия:
- Переименовывает файл журнала с меткой времени
- Создает новый пустой файл журнала с тем же именем, что и раньше
Проверка конфигурации Logrotate по умолчанию
Logrotate проверяет следующий файл для его конфигурации:
/etc/logrotate.conf
В этом мы видим, что он получает всю важную информацию о:
- Как часто он должен вращать журналы
- Сколько резервных копий следует сохранить
- Какой суффикс он должен добавить к старым журналам
- Нужно ли им сжимать их или нет
- и т.д…
Вот скриншот файла конфигурации logrotate:
По умолчанию старые файлы журналов не сжимаются. Вы можете изменить это, просто раскомментируя директиву «compress», как показано выше.
Добавление файлов для logrotate
Как logrotate знает, с какими журналами работать? Файлы в этом каталоге:
/etc/logrotate.d
Например, в нашем журнале “secure”, который мы видели в первом скриншоте, мы можем выяснить, какой файл в файле logrotate.d содержит его с помощью простой команды grep, как подробно описано в нашем руководстве по grep для продвинутых пользователей:
grep -r secure /etc/logrotate.d
Снимок экрана ниже показывает, какой файл отвечает за журнал “secure”:
Открывая «syslog», мы видим, что он сообщает logrotate работать с несколькими файлами:
Все они расположены по пути /var/log/. Поэтому каждый файл содержит:
- Имена файлов журналов, которые он должен вращать
- Директивы, специфичные для этого конкретного файла
- При отсутствии директив будут использоваться значения по умолчанию от logrotate.conf
Создание собственного файла Logrotate для ваших журналов
Мы можем следовать приведенному выше шаблону, чтобы создать запись с logrotate, которая сообщает нам, что она обрабатывает наши собственные файлы таким же образом.
Получить владельца и группу для своего каталога
Чтобы убедиться, что все разрешения установлены, нам необходимо запустить logrotate с соответствующими разрешениями. Перейдите в каталог, содержащий файл (ы) журнала, который вы хотите обработать, и получите владельца, а также группу, используя эту команду:
ls -l -d
Например, каталог /var/log имеет владельца как «root», а также группу «root»:
Создание файла Logrotate с конфигурацией
Затем создайте новый файл в файле /etc/logrotate.d/ и вставьте в него следующую конфигурацию:
/var/log/newlogfile { size 10M compress delaycompress su root root }
Замените /var/log/newlogfile на расположение собственного файла журнала. Кроме того, замените su root root владельцем и именем группы, которое вы получили на предыдущем шаге. Вот список директив logrotate, которые вы можете использовать. Директива «delaycompress» сообщает logrotate только для сжатия файлов с двумя версиями, старыми или более старыми. Таким образом, вы получаете быстрый и легкий доступ к последнему сжатому файлу журнала.
Вы также можете использовать следующие строки в блоке фигурных скобок для запуска скриптов до того и после, как ваши файлы журналов будут повернуты:
postrotate // скрипты для ротации журналов endscript
Как вы можете видеть, Linux имеет полное решение для вращения файла журнала. Все, что вам нужно сделать, это добавить несколько строк кода в существующую структуру, а ваши собственные файлы журналов можно повернуть без каких-либо проблем!