CentOS: logrotate – ротация логов

Автор: | 11/12/2014

centos-logo-new-4Что бы избежать заполнения диска старыми логами – необходимо настроить утилиту logrotate.

Основной файл конфигурации – /etc/logrotate.conf.

Для создания настроек отдельных логов – используем директорию /etc/logrotate.d, которая описана как:

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

Добавим наблюдение за логом /var/log/iptables.log.

Создаём файл /etc/logrotate.d/iptables.conf с таким содержимым:

/var/log/iptables.log {
    rotate 5
    missingok
    notifempty
    compress
    size 1M
    daily
    create 0644 root root
    postrotate
        service rsyslog restart > /dev/null
    endscript
}

Опции тут:

  • rotate – количество копий старых логов;
  • missingok – не писать сообщения в stdout, если файл отсутствует;
  • notifempty – не выполнять никаких действий, если файл пустой;
  • compress – сжимать gzip;
  • size – размер файла, при достижении которого он будет сжат и сохранён как старый;
  • daily – выполнять проверку каждый день;
  • create – права доступа и владелец при создании нового файла;

Дополнительные опции:

  • olddir – перемещать старые логи в указанную директорию;
  • postrotate/endscript – действие, выполняемое после ротации логов;
  • mail – адрес, на который высылать уведомление о ротации;

Для проверки – выполняем:

# logrotate -f /etc/logrotate.conf

Учтите – это действие выполнит обязательную ротацию всех логов, указанных в конфигурации logrotate.

Проверяем:

# ls -hl /var/log/iptables*
-rw-r--r-- 1 root root 939K Dec  6 10:46 /var/log/iptables.log
-rw-r--r-- 1 root root 451K Dec  6 10:40 /var/log/iptables.log-20141206.gz
# cat /var/lib/logrotate.status | grep iptables
"/var/log/iptables.log" 2014-12-6