Управление логами при помощи Logrotate

Любой программист или системный администратор прекрасно понимает, насколько важно ведение логов системы. Все работает, логи пишутся. Но если это дело не контролировать, то файлы со временем разрастаются до удручающих размеров и количеств. Для контроля логов — ротации — существует утилита logrotate. Что она делает? Эта утилита по заданным параметрам архивирует логи и складывает их туда, куда необходимо, а также управляет количеством бэкапов для каждого log-файла. Это вкратце. Подробнее можно почитать в

man logrotate

Итак, допустим, мы имеем какой-либо программный продукт, который круглосуточно одаривает нас подробными логами. Их наличие нам необходимо для анализа и наблюдения за работой системы, и мы хотим прибегнуть к их ротированию. Как это сделать при помощи logrotate?

Итак, я буду «говорить» за Ubuntu, и, надеюсь, за Debian.

Конфигурационные файлы logrotate размещаются в директории

/etc/logrotate.d/

Это типичное расположение конфигурационных файлов. Оно описывается в основном конфиге в строчке

include /etc/logrotate.d

Естественно, все это дело можно изменить. Но, я сейчас не об этом. Допустим, у меня есть директория, в которую сваливается кучка log-файлов с расширением (это которое file extension) .log. Мне необходимо ротировать логи ежедневно, при этом сжимать их и отправлять в определенную директорию. Как это сделать? Скачем в директорию /etc/logrotate.d/, создаем в ней файл с понятным нам именем, открываем его редактором (конечно делать все это надо из под root) и пишем примерно следующее:

/<путь>/<до>/<логов>/*.log {
    daily
    missingok
    rotate 28
    compress
    nodelaycompress
    notifempty
    create 640 user group
    olddir /var/log/<директория с логами>
}

Итак, что здесь что означает:

  • daily — периодичность ротации «ежедневно», может быть, например monthly — ежемесячно;
  • missingok — данный параметр сообщает утилите, что отсутствие лога не является ошибкой;
  • rotate 28 — параметр определяет сколько фрагментов одного лога хранить. в Данном случае я указал, чтобы хранилось 28 фрагментов каждого лога, по одному фрагменту на день;
  • compress — параметр определяет, сжимать логи или нет;
  • nodelaycompress — не откладывать сжатие фрагмента на следующий цикл ротации;
  • notifempty — не ролировать лог, размер которого 0 байт;
  • create 640 user group — с какими правами доступа и какого пользователя с группой делать владельцем лога;
  • olddir /var/log/<директория с логами> — директория, в которую будут складываться сжатые фрагменты логов.

Я не указал еще несколько параметров, таких, как, например, size — размер log-файла. Параметр позволяет ротировать логи не по временному промежутку, а по размеру логов. Подробнее можно прочитать в

man logrotate

После конфигурирования имеет смысл выполнить

logrotate -f

для принудительного запуска утилиты. Это полезно, если вы создали новые записи в конфигах logrotate.

Вот и всё, держите ваши файлы в порядке 😉 .

Похожие статьи:

  • Нет похожих статей
Запись опубликована в рубрике Linux с тэгами , , . Создать закладку на запись. Оставить комментарий или trackback: Trackback URL.

Оставить комментарий

Ваш e-mail никогда не будет опубликован или передан третьим лицам. Обязательные поля отмечены *

*
*