В Linux журналы хранят множество самых разных данных о состояниях системы. Задача администратора сохранять их как можно дольше, но не в ущерб производительности системы. Огромные файлы журналов значительно сокращают свободное пространство файловой системы. Для того, чтобы журнальная информация не утрачивалась и какое-то время хранилась на диске — существует система ротации. При достижении определённого размера информация из журнального файла сбрасывается в архив именуемый backlog. Со временем самый старый архивный файл замещается более новым. Ротация осуществляется при помощи утилиты logrotate. Обзор logrotate на Debianworld.
Конфиг logrotate
В главном конфиге находится глобальная конфигурация, эти директивы, которые будут распространяться на все логи если их действие не будет отменено.
Расположение конфига: /etc/logrotate.conf
Его содержимое:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# see "man logrotate" for details # rotate log files weekly weekly # keep 4 weeks worth of backlogs rotate 4 # create new (empty) log files after rotating old ones create # use date as a suffix of the rotated file dateext # uncomment this if you want your log files compressed #compress # RPM packages drop log rotation information into this directory include /etc/logrotate.d # no packages own wtmp and btmp -- we'll rotate them here /var/log/wtmp { monthly create 0664 root utmp minsize 1M rotate 1 } /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 } # system-specific logs may be also be configured here. |
Согласно настройкам по-умолчанию: еженедельно информация из логов сбрасывается в архив, самый старый архив затирается, всего хранится 4 backlog’а.
Чтобы указать как часто нужно выполнять проверку/производить ротацию используются следующие обозначения: hourly, daily, weekly, monthly, yearly.
Пользовательские конфигурации logrotate находятся в директории /etc/logrotate.d, в logrotate.conf подключаются при с помощью include. Содержание каталога в CentOS:
1 2 3 |
[alex123@ih772213 ~]# ls /etc/logrotate.d bootlog exim httpd named nginx.rpmnew syslog vsftpd chrony fail2ban mariadb nginx roundcubemail vesta yum |
Основные директивы управления и обработки логов:
rotate — указывает сколько старых логов нужно хранить, в параметрах передается количество;
create — указывает, что необходимо создать пустой лог файл после перемещения старого;
dateext — добавляет дату ротации перед заголовком старого лога;
compress — указывает, что лог необходимо сжимать;
delaycompress — не сжимать последний и предпоследний журнал;
extension — сохранять оригинальный лог файл после ротации, если у него указанное расширение;
mail — отправлять Email после завершения ротации;
maxage — выполнять ротацию журналов, если они старше, чем указано;
missingok — не выдавать ошибки, если лог файла не существует;
olddir — перемещать старые логи в отдельную папку;
postrotate/endscript — выполнить произвольные команды после ротации;
start — номер, с которого будет начата нумерация старых логов;
size — размер лога, когда он будет перемещен;
Настройка обработки каждого лога, который подлежит ротации описывается следующей конструкцией:
адрес_файла_лога {
директивы
}
Для теста logrotate можно создать файл rsyslog.conf в директории /etc/logrotate.d/ и записать в него соответствующие настройки:
/var/log/messages {
weekly
rotate 4
size 15M
compress
delaycompress
}
Проверка лога /var/log/messages будет производится еженедельно, хранится будут 4 файла, минимальный размер лога для ротации (сброса данных в архив) 15Мб (если лог не превысит 15Мб, то он не будет обрабатываться). Для архивов логов будет использоваться сжатие (кроме последнего и предпоследнего).
Проверка
Для того, чтобы убедиться, то logrotate работает — необходимо его протестировать:
1 |
logrotate -d /etc/logrotate.d/rsyslog.conf |
logrotate с ключом -d — режим отладки, нечто вроде эмулятора, на экран выведется подробная информация о произведённых действиях, но файлы на диске не будут изменены.
Свежие комментарии