Главная
Главная Руководства FreeBSD › Logrotate в FreeBSD



Автор:

Статья опубликована: 2020-07-31 11:03:25
Последние правки: 2020-07-31 12:29:21

Установим logrotate на FreeBSD и настроим ротацию каких-нибудь логов.

  • Использованные версии ПО:
    # uname -sr
    FreeBSD 12.1-STABLE
    
    # pkg info | grep logrotate
    logrotate-3.13.0_1             Daemon to rotate, compress, remove, and mail system log files
    


  • Установка
    # cd /usr/ports/sysutils/logrotate
    # make install clean
    


  • Настройка

    Основной файл настроек находится тут: /usr/local/etc/logrotate.conf. Я его не трогал. Настройки для логов разных программ принято хранить тут: /usr/local/etc/logrotate.d

    Для автозапуска logrotate нужно добавить строчку в /etc/crontab:
    0 0 * * * root /usr/local/sbin/logrotate /usr/local/etc/logrotate.conf
    


  • Настроим ежедневную ротацию для логов exim

    Создадим файл /usr/local/etc/logrotate.d/exim-daily со следующим содержимым:
    /var/log/exim/mainlog {
        daily
        missingok
        rotate 30
        compress
        delaycompress
        notifempty
        create 640 mailnull mail
        prerotate
            /usr/local/sbin/eximstats /var/log/exim/mainlog | /usr/bin/mail -s "Exim daily stat" root
        endscript
    }
    /var/log/exim/rejectlog {
        daily
        missingok
        rotate 30
        compress
        delaycompress
        notifempty
        create 640 mailnull mail
    }
    
    Неплохой список опций для конфига logrotate можно найти тут. Я же только скажу, что логи будут храниться за 30 последних дней, совсем старые будут архивироваться для экономии места на диске, новый файл лога будет создаваться с правами 640 и от пользователя mailnull и группы mail. Самые внимательные из вас наверняка уже заметили вот эти строчки, о них я хочу рассказать подробнее:
        prerotate
            /usr/local/sbin/eximstats /var/log/exim/mainlog | /usr/bin/mail -s "Exim daily stat" root
        endscript
    
    Здесь мы предварительно натравливаем на лог файл утилиту eximstats для сбора и показа статистики и отправляем результаты по email пользователю root. Очень удобно.

    Проверка в ручном режиме, без изменений в файлах:
    # logrotate -df /usr/local/etc/logrotate.d/exim-daily
    
    Принудительная ротация лог-файлов в ручном режиме:
    # logrotate -f /usr/local/etc/logrotate.d/exim-daily