On the road again

Утилита 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

Add comment