LNMP详解(十六)——Nginx日志切割

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: LNMP详解(十六)——Nginx日志切割

今天继续给大家介绍Linux运维相关知识,本文主要内容是Nginx日志切割。

一、Nginx日志切割原因
在企业生产环境中,Nginx的web服务器每天都会产生大量的日志信息,并且Nginx本身不会对访问日志进行切割,这就导致了Nginx日志量不断增大,不利于后期对日志的访问。基于此,我们在生产环境中,需要使用shell脚本+crontab定时任务的方式对Nginx日志进行切割。

二、Nginx日志特性
在进行Nginx切割脚本编写前,我们必须先了解Nginx日志的一些特性。Nginx对于日志的记录,时使用了定位符进行定位,因此,在Nginx启动后,我们即使将Nginx日志移动到其他位置,Nginx本身会向移动后的日志文件继续写入日志信息,而不是严格根据配置文件内容,在日志文件处创建新的日志文件并进行写入。基于这一特性,我们不能编写将Nginx日志不断的移动或者重命名到其他位置的SHELL脚本视图实现Nginx日志切割。
我们可以执行命令:

ll /proc/【Nginx主进程PID】/fd/
1
来查看Nginx的日志标识符,如下所示:

从上图可以看出,该目录下有链接文件,指向的是Nginx的日志位置,我们将Nginx日志移动后,发现链接也会跟着改变,如下所示:

只有将Nginx重新启动后,Nginx日志才会丢失对该日志的定位,并且根据配置文件的内容重新创建Nginx日志。因此,我们在编写Nginx日志切割脚本时,当我们移动Nginx日志后,必须reload重启Nginx服务。

三、Nginx日志切割脚本
最后,根据上述原理,我们编写Nginx日志切割的脚本,如下所示:

!/bin/bash

2022-02-19

writed by pzz

used to cut the nginx log

SOURCE_LOG=/usr/local/nginx/logs/access.log
DESTINATION_LOG=/usr/local/nginx/backup/date +%Y%m%d
echo $DESTINATION_LOG
if [ ! -d $DESTINATION_LOG ];then
mkdir -p $DESTINATION_LOG
fi
mv $SOURCE_LOG $DESTINATION_LOG
/usr/local/nginx/sbin/nginx -s reload
echo "The log of the Nginx has been cut!"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
上述脚本的原理与本文第二章介绍基本相同,就是尝试移动Nginx日志,并重启Nginx服务。
上述脚本写完后,我们还要将该脚本放入定时任务中,执行命令:

crontab -e
1
然后写入如下内容:

0 5 * /bin/bash /usr/local/nginx/nginx_log_cut.sh >> /usr/local/nginx/nginx_log_cut.log 2>&1
1
让该脚本每天5点对日志进行自动切割,这样,该脚本就会在每天5点自动执行,对Nginx日志进行切割了。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200
————————————————

                        版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_40228200/article/details/123014142

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
3月前
|
应用服务中间件 nginx
nginx error日志 client intended to send too large body: 1434541 bytes 如何处理?
【8月更文挑战第27天】nginx error日志 client intended to send too large body: 1434541 bytes 如何处理?
261 6
|
3月前
|
应用服务中间件 Linux nginx
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
|
3月前
|
存储 监控 应用服务中间件
查看nginx日志文件
器性能和提高网站可用性。掌握日志文件的路径、查看方法和基本分析技能对于任何服务器管理员来说都是必备技能。
127 1
|
3月前
|
存储 Ubuntu 应用服务中间件
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
33 4
|
3月前
|
存储 应用服务中间件 nginx
部署ELK+filebeat收集nginx日志
部署ELK+filebeat收集nginx日志
124 0
部署ELK+filebeat收集nginx日志
|
3月前
|
应用服务中间件 Linux nginx
Nginx log 日志文件较大,按日期生成 实现日志的切割
Nginx log 日志文件较大,按日期生成 实现日志的切割
649 0
|
3月前
|
应用服务中间件 nginx
[nginx]日志中记录自定义请求头
[nginx]日志中记录自定义请求头
|
3月前
|
应用服务中间件 Shell nginx
shell分析nginx日志的一些指令
shell分析nginx日志的一些指令
|
3月前
|
应用服务中间件 Shell Linux
使用logrotate定期切割nginx日志
使用logrotate定期切割nginx日志
109 0
|
4月前
|
应用服务中间件 Linux 开发工具
Nginx14---目录结构分析,查看Ngnix访问日志命令的写法​
Nginx14---目录结构分析,查看Ngnix访问日志命令的写法​