一、为什么要做Nginx日志管理:
1)方便查询;
2)节省服务器空间;
3)日志留存180天符合网络安全法要求;
二、 Logrotate工具简介
Logrotate 是 CentOS 操作系统内置日志管理工具,该工具可对系统中生成的大量日志文件进行归档管理,其允许对日志文件实行压缩、删除或邮寄等操作。Logrotate 可以按照每天、周、月或达到某一大小的日志文件进行归档操作,Logrotate 基于 anacrontab 实现计划任务,可以在无须人工干预使用自动化方式完成日志归档操作。
三、配置路径
第一种方式: 在/etc/logrotate.conf文件中配置
[root@cdn ~]# ll /etc/logrotate.conf
-rw-r--r--. 1 root root 493 Apr 17 2021 /etc/logrotate.conf
第二种方式:在/etc/logrotate.d 目录下编写相关日志管理配置文件(如果没有就新建一个文件)
[root@cdn ~]# ls /etc/logrotate.d/
btmp chrony dnf firewalld nginx rpm rsyslog samba sssd wtmp
四、用法
[root@cdn ~]# cat /etc/logrotate.d/nginx
/var/log/nginx/*.log {
create 0640 nginx root #创建新的日志文件,并设置 权限为640,属于nginx用户,root组
daily #指定转储周期为每天;
rotate 10 #最多保留10个,这里为了符合网络安全法及等保要求,留存180天。
missingok # 如果日志文件不存在,则忽略该错误
notifempty # 如果日志文件为空,则不执行轮换
compress # 压缩旧的日志文件
delaycompress # 在下次轮换时再压缩旧的日志文件,方便查询近期日志不用解压,看情况配置了。
sharedscripts # 所有轮换操作共用一个 postrotate 脚本,提高效率和可靠性
postrotate #在轮换前执行以下命令/脚本
/bin/kill -USR1 `cat /run/nginx.pid 2>/dev/null` 2>/dev/null || true
endscript #结束 prerotate 节点
}
详细参数:
daily #指定转储周期为每天;
weekly #指定转储周期为每周;
monthly #指定转储周期为每月;
rotate 30 #保留30个备份;
compress #压缩转储的备份文件;
copytruncate #备份当前日志并截断;
nocreate #不创建新的日志文件;
create 0640 nginx nginx #创建新的日志文件,设置权限,用户及组;
notifempty #日志为空不转储;
dateext #为日志文件打上日期标签;
minsize 20M #日志大小大于20M后才能参与轮替;
ifempty #不论日志是否空,都进行轮替;
notifempty #若日志为空,则不进行轮替;
sharedscripts #作用域下文件存在至少有一个满足轮替条件的时候,所有轮换操作共用一个 postrotate 脚本,提高效率和可靠性
prerotate/endscript #在轮替之前执行之间的命令,prerotate与endscript成对出现。
配置完之后再强制执行一次(具体看你选择哪种方式配置执行)
使用第一种方式:
logrotate -vf /etc/logrotate.conf
第二种方式:
logrotate -vf /etc/logrotate.d/nginx(此处根据你实际配置文件名称)