Если вы продолжительное время управляете сервером Linux, вы знакомы с проблемой файлов журналов. Иногда они могут быть достаточно сложными, чтобы даже найти их, а затем вы иногда сталкиваетесь с файлом размером в сотни МБ (или даже с ГБ). Поиск через это — боль, и они могут в конечном итоге даже начать съедать Ваше пространство для хранения.
В этой статье вы узнаете, как справиться с этой проблемой. Мы собираемся использовать встроенный пакет Linux для системных журналов, который уже существуют. Это означает, что вам не нужно устанавливать новые пакеты! Все, что вам нужно знать, — это добавить конфигурацию для собственных файлов журналов.
Существует несколько файлов системных журналов в следующем месте:
/var/log/
На скриншоте ниже мы перечислим все файлы в этом каталоге и покажим размер файла в МБ:
Как вы можете видеть, есть много больших файлов журналов, которые проставлены с датой. Они генерируются по умолчанию «logrotate». Посмотрев на отметки времени, мы видим, что они генерируются раз в семь дней. Поэтому для каждого файла журнала здесь logrotate выполняет следующие действия:
Logrotate проверяет следующий файл для его конфигурации:
/etc/logrotate.conf
В этом мы видим, что он получает всю важную информацию о:
Вот скриншот файла конфигурации logrotate:
По умолчанию старые файлы журналов не сжимаются. Вы можете изменить это, просто раскомментируя директиву «compress», как показано выше.
Как logrotate знает, с какими журналами работать? Файлы в этом каталоге:
/etc/logrotate.d
Например, в нашем журнале “secure”, который мы видели в первом скриншоте, мы можем выяснить, какой файл в файле logrotate.d содержит его с помощью простой команды grep, как подробно описано в нашем руководстве по grep для продвинутых пользователей:
grep -r secure /etc/logrotate.d
Снимок экрана ниже показывает, какой файл отвечает за журнал “secure”:
Открывая «syslog», мы видим, что он сообщает logrotate работать с несколькими файлами:
Все они расположены по пути /var/log/. Поэтому каждый файл содержит:
Мы можем следовать приведенному выше шаблону, чтобы создать запись с logrotate, которая сообщает нам, что она обрабатывает наши собственные файлы таким же образом.
Чтобы убедиться, что все разрешения установлены, нам необходимо запустить logrotate с соответствующими разрешениями. Перейдите в каталог, содержащий файл (ы) журнала, который вы хотите обработать, и получите владельца, а также группу, используя эту команду:
ls -l -d
Например, каталог /var/log имеет владельца как «root», а также группу «root»:
Затем создайте новый файл в файле /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 имеет полное решение для вращения файла журнала. Все, что вам нужно сделать, это добавить несколько строк кода в существующую структуру, а ваши собственные файлы журналов можно повернуть без каких-либо проблем!