Примеры настроек logrotate для различных программ
Подробнее о настройке Logrotate.
PostgreSQL
vi /etc/logrotate.d/postgresql-common
/var/log/postgresql/*.log {
daily
rotate 7
copytruncate
compress
delaycompress
notifempty
missingok
su root root
}
logrotate -f /etc/logrotate.d/postgresql-common
MariaDB/MySQL
vi /etc/logrotate.d/mariadb
/var/log/mariadb/mariadb.log {
create 640 mysql mysql
notifempty
daily
rotate 3
missingok
compress
postrotate
# just if mysqld is really running
if test -x /usr/bin/mysqladmin && \
/usr/bin/mysqladmin ping &>/dev/null
then
/usr/bin/mysqladmin flush-logs
fi
endscript
}
Также необходимо создать файл .my.cnf с логином и паролем для подключения в СУБД:
vi /root/.my.cnf
[client]
user=root
password=password
Запустить можно командой:
logrotate -f /etc/logrotate.d/mariadb
PHP-FPM
vi /etc/logrotate.d/php-fpm
/var/log/php-fpm/*.log {
rotate 14
missingok
notifempty
sharedscripts
compress
maxage 14
postrotate
/bin/kill -SIGUSR1 `cat /var/run/php-fpm/php-fpm.pid 2>/dev/null` 2>/dev/null || true
endscript
}
logrotate -f /etc/logrotate.d/php-fpm
Logstash-forwarder
vi /etc/logrotate.d/logstash
/var/log/logstash-forwarder/*.log {
rotate 30
size=10M
missingok
notifempty
daily
compress
maxage 30
postrotate
(/usr/bin/systemctl restart logstash-forwarder || /sbin/service logstash-forwarder restart) > /dev/null 2>&1
endscript
}
/var/log/logstash-forwarder/*.err {
rotate 30
size=10M
missingok
notifempty
daily
compress
maxage 30
postrotate
(/usr/bin/systemctl restart logstash-forwarder || /sbin/service logstash-forwarder restart) > /dev/null 2>&1
endscript
}
logrotate -f /etc/logrotate.d/logstash
NGINX
vi /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 nginx nginx
sharedscripts
postrotate
test ! -f /var/run/nginx.pid || /bin/kill -USR1 `cat /var/run/nginx.pid` 2>/dev/null || true
endscript
}
* обратите внимание, что после ротации мы перезапускаем nginx по идентификатору процесса, который хранится в файле /var/run/nginx.pid. Однако, в вашем случае, путь до файла может быть другой. Его можно посмотреть в конфигурационном файле nginx.
logrotate -f /etc/logrotate.d/nginx
Apache (httpd)
vi /etc/logrotate.d/apache2
/var/log/apache2/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 640 www-data www-data
sharedscripts
postrotate
if /etc/init.d/apache2 status > /dev/null ; then \
/etc/init.d/apache2 reload > /dev/null; \
fi;
endscript
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi; \
endscript
}
logrotate -f /etc/logrotate.d/apache2
Kannel в CentOS
vi /etc/logrotate.d/kannel
/var/log/kannel/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 640 root root
postrotate
/bin/kill -1 `/bin/cat /var/run/kannel/kannel_bearerbox.pid` || true > /dev/null 2> /dev/null
/bin/kill -1 `/bin/cat /var/run/kannel/kannel_smsbox.pid` || true > /dev/null 2> /dev/null
endscript
}
logrotate -f /etc/logrotate.d/kannel
Сервер DHCP
vi /etc/logrotate.d/dhcp
/var/log/dhcp.log {
daily
rotate 10
missingok
notifempty
compress
delaycompress
sharedscripts
create 0600 root root
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
logrotate -f /etc/logrotate.d/dhcp
OpenVPN
vi /etc/logrotate.d/openvpn
/var/log/openvpn/openvpn*.log {
daily
rotate 7
compress
copytruncate
delaycompress
missingok
notifempty
}
logrotate -f /etc/logrotate.d/openvpn
ISPmanager
vi /etc/logrotate.d/ispmanager
/usr/local/mgr5/var/logs/*.log* {
daily
rotate 10
compress
copytruncate
delaycompress
missingok
notifempty
}
logrotate -f /etc/logrotate.d/ispmanager
Freeradius
vi /etc/logrotate.d/freeradius
/var/log/radius/radius.log {
daily
compress
rotate 14
missingok
copytruncate
}
logrotate -f /etc/logrotate.d/freeradius