docker nginx/openresty容器使用logrotate日志切割

post by rocdk890 / 2022-9-17 12:33 Saturday linux技术
相信很多人都不知道docker nginx的日志应该怎么用logrotate来进行切割,今天就来给大家演示下.
系统:centos7.x(64位)
1.先确认你们docker nginx/openresty容器的日志位置
我的openresty日志是在:
/data/nginx/logs

2.确认你们docker nginx/openresty容器名字
docker ps -a|grep openresty

c1e985459515   rocdk890/openresty:1.21.4.1                                                        "/usr/local/openrest…"   2 months ago   Up 17 hours                                                                         openresty

3.配置logrotate切割nginx/openresty日志
cd /etc/logrotate.d/

vim openresty
/data/nginx/logs/*log {
	create 0644 nobody nobody
	daily
	dateext
	missingok
	rotate 7
	compress
	delaycompress
	notifempty
	sharedscripts
	postrotate
		docker exec openresty sh -c "if [ -f /var/run/nginx.pid ]; then kill -USR1 `docker exec openresty cat /var/run/nginx.pid`; echo 日志打包完毕; fi"
	endscript
}

参数详解:

daily 日志的轮替周期是每天
weekly 日志的轮替周期是每周
monthly 日志的轮替周期是每月
rotate 数字 保留的日志文件个数,0指没有备份
compress 当进行日志轮替时,对旧的日志进行压缩
create mode owner group 建立新日志,同时指定新日志的权限与所有者和所属组,如 create 0644 root root
copytruncate 用于还在打开中的日志文件,把当前日志备份并截断
mail address 当进行日志轮替时,输出内容通过邮件发送到指定的邮件地址,如 mail test@gmail.com
missingok 如果日志不存在,则忽略改日志的警告信息
notifempty 如果日志为空文件,则不进行日志轮替
minsize 大小 日志只有大于指定大小才进行日志轮替,而不是按照时间轮替,如 size 100k
dateext 使用日期作为日志轮替文件的后缀,如 access.log-2019-07-12
sharedscripts 在此关键词之后的脚本只执行一次
prerotate/endscript 在日志轮替之前执行脚本命令。endscript 标识 prerotate 脚本结束
postrotate/endscript 在日志轮替之前执行脚本命令。endscript 标识 postrotate脚本结束

4.进行验证
logrotate -f /etc/logrotate.d/openresty

参数详解:
-?或–help 在线帮助
-d或–debug 详细显示指令执行过程,便于排错或了解程序执行的情况
-f或–force 强行启动记录文件维护操作,纵使logrotate指令认为没有需要亦然
-s<状态文件>或–state=<状态文件> 使用指定的状态文件
-v或–version 显示指令执行过程
-usage 显示指令基本用法
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-792.html

标签: nginx 日志 切割 docker 容器 openresty logs

评论: