docker nginx/openresty容器使用logrotate日志切割
相信很多人都不知道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 显示指令基本用法
评论: