заметки на полях

Блокнот разработчика

Currently browsing logrotate

Ротация логов nginx

Простенький скрипт, который проверяет доступность пакета logrotate и запускает ротацию. Кладется в /etc/cron.daily и запускается как правило в 4 часа утра, за это отвечает запись в /etc/crontab (у меня в 6 часов 25 минут):

25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

Сам скрипт, запускающий суточные задания:

#!/bin/sh

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

Среди которых ротация логов nginx:

/var/log/nginx/*.log /var/www/*/logs/error.log {
        daily
        missingok
        rotate 1
        compress
        delaycompress
        notifempty
        create 640 root adm
        sharedscripts
        postrotate
                [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
                cat /var/log/nginx/error.log.1 | mail -s "Nginx error log" root
                cat /var/www/*/logs/error.log.1 | mail -s "Sitests nginx error log" root
        endscript
}

Что здесь происходит? Ротируются логи nginx из /var/log/nginx а за позапрошлый день сжимаются и так же с логами для всех проектов, если учесть что проекты находятся в /var/www а логи соответственно в директории logs проекта. А логи за предыдущий день отправляются на почту рута двумя письмами – одно со всех проектов, а второе самого nginx.