Ротация логов – logrotate.
В Ubuntu, да и во всех Linux, сама система, сервисы и программы все
значимые события записывают в файлы журналов или лог-файлы, которые
используются для диагностики ошибок, определения причины сбоев,
получения статистики, а иногда и для работы других программ или
сервисов. Обычно файлы логов хранятся в директории /var/log.
Включение или отключение функции ведения
логов, перечень событий, которые должны записываться в логи, названия
лог-файлов и другая информация обычно задается в конфигурационных файлах
сервиса или программы.
Некоторые сервисы и программы записывают
в лог-файлы достаточно много информации и они распухают на глазах. Для
ограничения бесконтрольного роста лог-файлов существует специальный
сервис – logrotate, который осуществляет ротацию логов через заданный отрезок времени и удаляет ставшие ненужными старые файлы.
Основная функция logrotate
заключается в периодической замене старых логов новыми. Logrotate может
быть настроен на ежедневную, еженедельную или ежемесячную ротацию. Кроме
того, можно задать размер файла, по достижении которого файл будет
ротирован. В зависимости от настроек архив логов может храниться как в
сжатом, так и в несжатом виде. Обычно logrotate выполняется в качестве
каждодневного задания (cron).
Базовые настройки logrotate хранятся в конфигурационном файле /etc/logrotate.conf. По умолчанию, в Ubuntu 14.04 он выглядит так:
# see "man logrotate" for details # rotate log files weekly weekly # use the syslog group by default, since this is the owning group # of /var/log/syslog. su root syslog # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # uncomment this if you want your log files compressed # compress # packages drop log rotation information into this directory include /etc/logrotate.d # no packages own wtmp, or btmp -- we'll rotate them here /var/log/wtmp { missingok monthly create 0664 root utmp rotate 1 } /var/log/btmp { missingok monthly create 0660 root utmp rotate 1 } # system-specific logs may be configured here
Обычно устанавливаемые пакеты записывают
информацию о ротации своих логов (каким образом Logrotate будет
работать с тем или иным лог файлом) в директорию /etc/logrotate.d, но
далеко не все и не всегда оптимальную. Иногда получается бесконтрольный
рост лог-файлов, который приводит к неприятным последствиям. Особенно
это важно при работе с vds/vps с небольшим объемом дисковой памяти.
Например утилита fail2ban при установке формирует конфигурационный файл /etc/logrotate.d/fail2ban с содержимым:
/var/log/fail2ban.log { weekly # ротация раз в неделю. Возможные варианты daily, weekly, monthly, size (например size=1M) rotate 4 # сохраняется последние 4 ротированных файла compress # сжимать ротируемый файл delaycompress # сжимать предыдущий файл при следующей ротации missingok # отсутствие файла не является ошибкой postrotate # скрипт будет выполнен сразу после ротации fail2ban-client set logtarget /var/log/fail2ban.log >/dev/null endscript # If fail2ban runs as non-root it still needs to have write access # to logfiles. # create 640 fail2ban adm create 640 root adm # сразу после ротации создать пустой файл с заданными правами и пользователем }
Русскими комментариями раскрыты все
основные директивы. Всего допустимых директив в конфигурационном файле
очень много (более 40). Подробнее о них можно узнать из man logrotate.
Для немедленного применения изменений можно выполнить:
$ logrotate /etc/logrotate.conf
Для проверки внесенный изменений можно запустить команду (никаких действий с логами не будет выполнено):
$ logrotate -d /etc/logrotate.conf
Комментариев нет:
Отправить комментарий