如何在Alpine Linux中安装和配置logrotate

时间:2020-01-09 10:39:17  来源:igfitidea点击:

在Alpine Linux中,如何安装logrotate为Nginx服务器配置日志轮换(转储)?
您需要使用apk命令命令来安装logrotate。
这是一个易于使用的sysadmin工具,用于管理大量日志文件。
您可以执行自动转储,压缩,删除等操作。
本教程向您展示"如何在运行于lxd或VM或任何其他云服务的Alpine Linux上使用logrotate管理日志文件"。

在Alpine Linux中安装和配置logrotate

执行以下命令:

# apk add logrotate

输出示例:

fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
(1/2) Installing popt (1.16-r7)
(2/2) Installing logrotate (3.14.0-r0)
Executing busybox-1.28.4-r3.trigger
OK: 90 MiB in 82 packages

配置

您的logrotate每天都会使用cron作业被调用。
这是默认的cronjob:

# cat /etc/periodic/daily/logrotate

输出示例:

#!/bin/sh
 
if [ -f /etc/conf.d/logrotate ]; then
	. /etc/conf.d/logrotate
fi
 
if [ -x /usr/bin/cpulimit ] && [ -n "$CPULIMIT" ]; then
	_cpulimit="/usr/bin/cpulimit --limit=$CPULIMIT"
fi
 
$_cpulimit /usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

缺省的logrotate文件位于/etc/logrotate.conf中:

# cat /etc/logrotate.conf

输出示例:

# 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

# exclude alpine files
tabooext + .apk-new

# uncomment this if you want your log files compressed
compress

# main log file
/var/log/messages {}

# apk packages drop log rotation information into this directory
include /etc/logrotate.d

# system-specific logs may be also be configured here.

对于nginx服务器,如下创建/更新/etc/logrotate.d/nginx文件:

# cat /etc/logrotate.d/nginx

输出示例:

/var/log/nginx/*.log {
	missingok
	sharedscripts
	postrotate
	  /etc/init.d/nginx --quiet --ifstarted reopen
	endscript
}

这意味着:

  • /var/log/nginx/*。log处理/var/log/nginx /目录中的所有日志文件。
  • missingok不要停止任何错误,并继续下一个日志文件。
  • sharedscripts共享脚本意味着postrotate脚本将只运行一次(在压缩旧日志之后),而不是对每个循环日志运行一次。
  • postrotate ... script ... endscript在压缩旧日志后运行此脚本。在这种情况下,请重新打开nginx的日志文件。

这将每周轮换日志文件。