Настройка ротации лог-файлов с помощью logrotate

Дата Автор cdb4 комментария

Полезным делом было бы настроить ротацию логов на VDS для нашего сайта. Делается это довольно просто в Ubuntu при помощи утилиты logrotate. Ставим logrotate:

sudo apt-get install logrotate

Теперь создадим конфиг для ротации логов нашего сайта — /etc/logrotate.d/koteika.ru со следующим содержимым:



/home/koteika.ru/logs/error.log
/home/koteika.ru/logs/access.log
{
    daily
    missingok
    rotate 10
    compress
    notifempty
    create 640 koteika.ru koteika.ru
    sharedscripts
    postrotate
                [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

/home/koteika.ru/logs/slow.log {
    weekly
    missingok
    rotate 4
    compress
    notifempty
    create 640 koteika.ru koteika.ru
    sharedscripts
    postrotate
                [ ! -f /var/run/php5-fpm.pid ] || kill -USR1 `cat /var/run/php5-fpm.pid`
    endscript
}

Написано здесь следующее: для error.log и access.log будет ежедневная ротация логов (логи будут ротироваться даже если файл будет пуст), будет храниться последние 10 снапшотов логов, кторые будут зажаты в gzip, файл архива будет с правами 640:koteika.ru:koteika.ru. После обработки будет вызван скрипт, который скажет nginx, что пора переоткрыть файлы логов (это важно). Для slow.log все по аналогии, за исключением что команда на переоткрытие логов будет послана в php-fpm. На всякий случай проверьте свои пути к pid файлам в настройках nginx и php-fpm.

Теперь проверяем как работает ротация:

sudo logrotate -d /etc/logrotate.d/koteika.ru

Если ошибок нет, то ставим в ротацию:

sudo logrotate -v -f /etc/logrotate.d/koteika.ru


Подробнее о ротации логов http://debianworld.ru/articles/rotaciya-logov-s-pomoshyu-logrotate-v-debian-ubuntu/

Если вам понравилась моя статья, пожалуйста, не поленитесь кликнуть любую кнопочку ниже, или кинуть ссылку на статью в свой блог или форум. Всегда рад ответить на ваши вопросы в комментариях. Спасибо 🙂

4 комментария на «Настройка ротации лог-файлов с помощью logrotate»

  1. Ваша инструкция работает, но есть одна ошибка — после ротации nginx не пишет в новый файл acceess.log, а пишет в старый, но уже переименованный access.log.1
    Перерыл кучу сайтов, но не нашёл ответа. Проблема появилась после upgrade OS.
    Ubuntu 14, nginx 1.8

    • Скорее всего проблема в nginx. На USR1 nginx раньше должен был переоткрыть логи, может сейчас какой другой сигнал для этого юзается.

Добавить комментарий

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