Утилита logrotate применяется для автоматической ротации логов по размеру или времени, сжатие и удаление(отправка по электронной почте) старых лог-файлов. О настройке logrotate на linux пойдет речь ниже.
Утилита logrotate запускается каждый день с помощью планировщика заданий crond каждый день. Строка запуска имеет примерно такой вид ( можно посмотреть в /etc/cron.daily/logrotate:
/usr/sbin/logrotate /etc/logrotate.conf
Из строки запуска видно, что утилита logrotate использует конфигурационный файл /etc/logrotate.conf. Добавлять свои данные для ротации логов можно как в этот файл, так и в /etc/logrotate.d/$your_file$. Я пошел по второму пути, создал пустой файл командой touch и заполнил его данными. Однако в этом была моя ошибка - лучше скопировать уже имеющийся файл из этой папки и поменять в нем данные на свои. В случае использования файла, созданного командой touch, парсер logrotate ругался на каждую строку и не мог считать конфигурацию.
Рассмотрим пример конфигурационного файла.
#Logrotate configuration file for Nagios (NetracMonitor) logs
#logs are in /tti/backup/NetracMonitor
#
/tti/backup/NetracMonitor/*.log {
missingok
weekly
ifempty
compress
olddir /tti/backup/NetracMonitor/logs.OLD
rotate 30
create 0775 nagios nagios
sharedscripts
postrotate
/opt/tti/netrac_monitor/integration/scripts/NetracMonitor.sh reload
endscript
}
/tti/backup/NetracMonitor/*.log - путь к логам и маска файлов
missingok - в случае отсутствия лог-файла не выдавать ошибки, а продолжать работу
weekly - выполнять ротацию раз в неделю
ifempty - выполнять ротацию даже в том случае, если лог-файл пуст (противоположная директива - notifempty)
compress - после ротации сжать файлы для экономии места. По умолчанию применяется gzip.
olddir /tti/backup/NetracMonitor/logs.OLD - путь к папке для хранения логов после ротации и сжатия
rotate 30 - в сумме выполнить 30 ротаций
create 0775 nagios nagios - на месте старых логов создавать новые пустые файлы с указанной маской прав, владельцем и группой
sharedscripts - выполнять скрипты после ротации НЕ для каждого ротируемого лог-файла, а один раз
postrotate - выполнить скрипт после ротации
/opt/tti/netrac_monitor/integration/scripts/NetracMonitor.sh reload - тело скрипта. Здесь мы перечитываем конфиг Нагиоса
endscript - конец выполнения скриптов
Более подробное описание всех директив, возможных в конфигурационном файле logrotate можно посмотреть в man logrotate.
Проверить правильность написания конфигурационного файла, можно запустив logrotate в debug - режиме:
logrotate -d /etc/logrotate.conf