Logrotate日志工具对NginX进行日志管理

发布时间:2023年12月20日

一、为什么要做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(此处根据你实际配置文件名称) 
文章来源:https://blog.csdn.net/weixin_45432833/article/details/135095282
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。