Установка Logrotate для управления логами в Linux

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

Установка Logrotate для управления логами в Debian/Ubuntu

Обновим пакеты в ОС:

Для установки используем:

После чего, переходим к настройке и запуску логротейта.

Настройка Logrotate для управления логами в Linux

Конфигурационный файл можно найти в :

Мой конфиг выглядит следующим образом:

Логи уровня приложения (заменяющие настройки по умолчанию в случае необходимости) хранятся в:

Я не буду заморачиваться и пропишу один конфиг для всей ротации ( можно настраивать для каждого отдельно):

Прописываем:

Я беру все логи которые имеют любое название и заканчиваются на .log и отслеживаю их в интервале — месяц ( служит директива monthly). Если превышает размер лога (size 100M), то выполнить ротацию Ротация происходит после 7 дней ( файлы сохраняются 7 дней). Лог-файлы я сжимаю ( директива compress). Опция delaycompress задерживает выполнение сжатия до следующей ротации логов, но она работает только с параметром — compress. Параметр missingok дает возможность обрабатывать следующий лог если какой-то отсутствует и не выдавая об ошибке. С опций notifempty можно запретить ротацию пустых файлов.  После ротации логов, все будет удалено и чтобы выполнялось сохранение логов, нужно создать файлы снова. Так вот, create позволяет это делать.

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

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

Если отладка не показала ничего плохого, можно запустить ротацию:

Вместо того, чтобы сжимать логи, можно переименовать их. Для этого есть директива dateext. Если наш формат даты отличается от yyyymmdd по умолчанию, мы можем указать его с помощью dateformat:

Так же, можно по окончанию,  отправить письмо на указанный емейл:

Если не хотите чтобы создавались пустые файлы после ротации, используйте:

Не откладывать сжатие файла на следующий цикл

Если не хотите отправлять старые логи на почту, то юзайте:

Сохранять все логи в одной и той же папке:

Интервалы для ротации:

Размеры для ротации (после превышения указанного размера, будет выполнятся ротация):

Можно посылать произвольные команды после выполнения ротации, например:

Данную утилиту, нужно запускать:

Можно автоматизировать и закинуть «logrotate» команду в crontab.

PS: По умолчанию, это возможно уже сделано:

Например, файл конфигурации для apache2 выглядит следующим образом:

Ротация производится раз в неделю. При отсутствии лога — не выводить ошибку. Сохранять 2 последних ротированных фалов и конечно же, сжимать их, но для пустых файлов никаких действий не выполнять. После того, как ротация прошла, создавать пустой файл с указанными правами.

Опции Logrotate

Наиболее часто использующиеся опции:

-d — Данная опция, дает возможность включить отладочный режим, который использует «-v» параметр. В этом режиме, ничего не будет выполнятся и применятся.

-f, —force — Данная опция, дает возможность принудительно запустить logrotate и запустить ротацию логов. Иногда бывает полезным, например — когда добавили новый функционал в конфиг или старые логи удалены вручную и чтобы не создавать новые файлы вручную, можно запустить логротейт с данной опцией.

-m, —mail command — Позволяет указывать команду для отправки лог-файлов по почте и она должна содержать входные параметры:

  • заголовок письма
  • получателя письма

После выполнения, логи будут отправлены на указанное мыло ( команда читает данные со стандартного входа STDIN), а командой по умолчанию — /usr/bin/mail -s.

-s, —state statefile — Данная опция позволяет задавать произвольный файл с состоянием. Это хорошо использовать тогда, когда в системе имеется несколько пользователей, которые работают ( запускают) с logrotate. По умолчанию, данный фал сохраняется в  /var/lib/logrotate/status.

—usage — Показать мануал по использованию данной утилиты.

-v, —verbose — Данная опция, позволяет выводит все происходящее на экран ( весь вывод).