Содержание

Ротация логов при помощи logrotate Linux

Logrotate - приложение, разработанное для облегчения управления лог-файлами. Особенно Logrotate полезен там, где создается большое количество лог-файлов. Утилита позволяет в автоматическом режиме архивировать, удалять, очищать и отправлять на e-mail лог-файлы. Этот процесс обычно называется ротацией лог файлов.

Logrotate может быть настроен на ежедневную, еженедельную или ежемесячную ротацию. Кроме того, можно задать размер файла, по достижении которого файл будет ротирован. Обычно logrotate выполняется в качестве каждодневного задания Использование планировщика cron в Linux.

Краткое описание файла настроек Logrotate

Описание того, каким образом Logrotate будет работать с тем или иным лог файлом находится в специальном конфигурационном файле. Как правило, они располагаются в директории /etc/logrotate.d/. Например, файл конфигурации для apache2 выглядит следующим образом:

$ more /etc/logrotate.d/apache2
/var/log/apache2/*.log {
        weekly              # ротация раз в неделю. Возможные варианты daily, weekly,
                            # monthly, size (например size=1M)
        missingok           # отсутствие файла не является ошибкой
        rotate 52           # сохраняется последние 52 ротированных файла
        compress            # сжимать ротируемый файл
        delaycompress       # сжимать предыдущий файл при следующей ротации 
                            # (т.е. файл *.log.1 будет не сжат, а *.log.2 и далее сжатыми)
        notifempty          # не обрабатывать пустые файлы
        create 640 root adm # сразу после ротации создать пустой файл с заданными правами и пользователем
        sharedscripts       # крипты prerotate/postrotate будут выполнены только один раз
                            # не зависимо от количества журналов, подходящих под заданный шаблон
        postrotate          # скрипт будет выполнен сразу после ротации
                if [ -f "`. /etc/apache2/envvars ; echo ${APACHE_PID_FILE:-/var/run/apache2.pid}`" ]; then
                        /etc/init.d/apache2 reload > /dev/null
                fi
        endscript
}

При этом, первая строка /var/log/apache2/*.log есть ничто иное, как шаблон обрабатываемых лог-файлов. Он означает, что указанная конфигурация ротации будет использоваться для всех файлов, находящихся в директории /var/log/apache2/ и имеющих расширение "log".

Допустимых директив в конфигурационном файле очень много (более 40). Подробнее о них можно узнать из man logrotate.

        postrotate
                reload rsyslog >/dev/null 2>&1 || true # for Debian
                invoke-rc.d rsyslog reload > /dev/null # for RHEL
        endscript

Основные опции Logrotate и тестирование

Как правило, после настройки конфигурационного файла появляется необходимость проверить работу logrotate для новых логов. Для этого есть возможность непосредственного запуска logrotate из командной строки. При этом допускаются следующие опции:

Как правильно чистить логи Linux

Если все правильно настроили, то вам просто нужно было указать конфиг файл

logrotate -f /etc/logrotate.conf

а после этого удалить СТАРЫЕ логи.