Logrotate日志工具对NginX进行日志管理
Logrotate日志工具对NginX进行日志管理
“ 前几天到一台Nginx服务器上查询某个日志,查询半天都没有反应,后来发现是日志文件已经20G了,难怪半天没反应,反馈给相关负责的同事,他说等他配置一下定时任务,当时心想:为啥要这么麻烦?今天以NginX日志为例,讲解Logrotate管理工具在日常日志管理中的应用。”

一、为什么要做Nginx日志管理:
- 方便查询;
- 节省服务器空间;
- 日志留存180天符合网络安全法要求;
- 编不下去了...
二、 Logrotate工具简介
Logrotate 是 CentOS 操作系统内置日志管理工具,该工具可对系统中生成的大量日志文件进行归档管理,其允许对日志文件实行压缩、删除或邮寄等操作。Logrotate 可以按照每天、周、月或达到某一大小的日志文件进行归档操作,Logrotate 基于 anacrontab 实现计划任务,可以在无须人工干预使用自动化方式完成日志归档操作。
三、配置路径:
第一种方式: 在/etc/logrotate.conf文件中配置

第二种方式:在/etc/logrotate.d 目录下编写相关日志管理配置文件(如果没有就新建一个文件)

四、用法:
先上一下我的配置(在上述两个配置路径中选一个进行配置即可。):
/var/log/nginx/*.log {
create 0640 nginx nginx #创建新的日志文件,并设置 权限为640,属于nginx用户,nginx组
weekly #每周进行轮换,简单理解为每周一个
rotate 26 #最多保留26个,这里为了符合网络安全法及等保要求,留存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(此处根据你实际配置文件名称)
以上就是使用Logrotate工具对nginx日志进行管理,如果其他的日志也可以按照这个方式进行配置,例如linux常用的审计日志

这里采用第一种方式,在/etc/logrotate.conf文件中配置,当然,在配置之后也要执行 logrotate -vf /etc/logrotate.conf 。
扩展知识:Ubuntu安装
sudo apt update
sudo apt install logrotate
好了今天分享到此结束,有什么不同的看法或者好的建议,欢迎交流讨论,共同进步!
浙公网安备 33010602011771号