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

Автор: | 12/11/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