Logrotate

Конфигурационный файл по умолчанию — /etc/logrotate.conf, а индивидуальные правила ротирования логов для сервисов хранятся в директории /etc/logrotate.d

Пример

/var/log/name_service/* {
    rotate 30
    size=10M
    missingok
    notifempty
    daily  
    compress
    delaycompress
    maxage 30
    create 0644 root root
    postrotate
       /usr/bin/systemctl restart logstash-forwarder
    endscript
}
  • rotate 30 — хранить последние 30 ротированных файлов. Остальные удалять.
  • size=10M — пока размер лог-файла не превысит 10 мегабайт, он не будет ротироваться.
  • missingok — если файла не существует, не выкидывать ошибку.
  • notifempty — если файл пустой, не выполнять никаких действий.
  • daily — делать ротацию каждый день.
  • dateyesterday – вчерашнюю дату при ротации
  • dateext – ставить дату вместо номера
  • compress — сжимать ротированные файлы.
  • delaycompress — сжимать только предыдущий журнал. Позволяет избежать ошибок, связанных с отсутствием доступа к используемому файлу.
  • maxage 30 — хранить ротированные файлы за последние 30 дней. Остальные удалять.
  • copytruncate – Создать копию оригинального log-файла, а потом его ‘обнулить’.  Таким образом сам файл не удаляется и не меняется его дескриптор. Несовместимость: create
  • create 0644 root root — создать новый лог-файл после ротирования.
  • postrotate … endscript — скрипт, который необходимо выполнить после чистки лога.

* /var/log/name_service/* — путь к файлу, который нужно ротировать. * указывает, что нужно чистить все файлы, которые расположены в каталоге /var/log/name_service/

Пример для ulog-acctd

/var/log/ulog-acctd/account.log /var/log/ulog-acctd/debug.log {
    daily
    rotate 50
    copytruncate
    compress
    notifempty
    dateyesterday #вчерашнюю дату при ротации
    #dateext #ставить дату вместо номера
    missingok
    sharedscripts
    prerotate
       if [ -e /var/run/ulog-acctd.pid ]; then kill -TSTP `cat /var/run/ulog-acctd.pid`; fi
    endscript
    postrotate
       if [ -e /var/run/ulog-acctd.pid ]; then kill -CONT `cat /var/run/ulog-acctd.pid`; fi
    endscript
}

Предварительная ротация (проверка/отладка)

В первую очередь проверьте что произойдет, когда вы принудительно запустите logrotate (без изменений в файловой системе):

$ logrotate -vdf CONFIG_FILE

с выводом в файл:

# /usr/sbin/logrotate -d /etc/logrotate.conf 2> /tmp/logrotate.debug

Принудительный запуск logrotate:

$ logrotate -vf CONFIG_FILE

Опции передаваемые команде logrotate:

-d, –debug                Запустить logrotate в режиме отладки (пробный прогон).
-f, –force                   Принудительно запустить logrotate.
-v, –verbose             Показать больше информации.

С помощью опции -f, –force, logrotate произведет принудительную ротацию файлов, даже если они не попадаю под определенные критерии, как minsizeage и т.п.

image_pdfimage_print

Leave a Reply

Your email address will not be published. Required fields are marked *