linux服务器,nginx日志切割保存

这篇具有很好参考价值的文章主要介绍了linux服务器,nginx日志切割保存。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们都知道,默认情况下,nginx的项目log是一直被累计写入的,随着时间越久,那么这个文件就会越大,这个时候如果我们要去做一些查找和排查就会比较困难,因为日志文件太大,操作起来比较费劲。

因此我们为了规避这个问题,提出日志切割的方案。

那日志切割的原理是怎么样的,我们来分析一下,我们先统计下连续10天的日志文件情况

-rw-r--r-- 1 nginx root   60M May 1 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   100M May 2 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   200M May 3 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   500M May 4 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   800M May 5 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   1G May 6 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   1.5G May 7 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   2G May 8 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   2.5G May 9 10:28 xxx.com.access.log
-rw-r--r-- 1 nginx root   2.9G May 10 10:28 xxx.com.access.log

我们可以发现,日志每天都在变大,时间越久,就越大,那么我们切割,应该按照什么规则来切割呢?

一般情况下,我们都是按日期来切割,例如:

xxx.com.access.log20230501的日志保存为一个文件,表示5-1的日志,

xxx.com.access.log20230502的日志保存为一个文件,表示5-2的日志,

xxx.com.access.log20230503的日志保存为一个文件,表示5-3的日志,

。。。。。。

也就是每天的日志保存一个文件,至于保存多久,根据实际情况而定,3天,10天,30天,60天,更久都可以,只是保留的天数越多,文件个数就越多而已

理解了这个思路,那么我们接下来要做的事情就是从xxx.com.access.log里面把指定日期的日志提取出来并单独保存为一个文件,我们使用脚本来实现:

#!/bin/bash
# Nginx日志切割

# 在/data/log/nginx目录下生成类似xxx.log20230526格式的日志,并保留前30天数据
# 创建计划任务,每天0点0分执行:0 0 * * * /data/script/nginx_log_rotation.sh

#你的日志所在目录 LOG_PATH
=/data/logs/nginx

#你的nginx服务运行的pid文件 PID
=/usr/local/nginx/logs/nginx.pid

#昨天的日期 YESTERDAY
=`date -d "yesterday" +%Y-%m-%d`
#因为日志目录里面可能有多个项目,这里我们使用循环读取的方式
for i in `find ${LOG_PATH} -maxdepth 1 -type f|grep -v '[0-9]$'`; do mv $i $i${YESTERDAY} done
#重新生成一个新的日志文件,用来保存新的数据 kill
-USR1 `cat ${PID}`
#删除创建时间在30天以前的日志文件 find ${LOG_PATH}
-mtime +30 -name "*[0-9][0-9]" | xargs rm -f exit 0

通过试验,我发现上面标红那句话说的不是很准确,因此来纠正一下

05-20项目上线,不管是什么时间点,早上,上午,下午,还是晚上都一样,xxx.com.access.log持续写入日志,那么这些日志的日期肯定都是05-20

然后05-21 00:00:00的时候执行一次脚本,通过mv命令把xxx.com.access.log日志(日期全是05-20)重命名为xxx.com.access.log20230520,并重新生成了一个空的xxx.com.access.log文件,用于继续写入日志,此时再写入的日志的日期已经是05-21了

然后05-22 00:00:00的时候执行一次脚本,通过mv命令把xxx.com.access.log日志(日期全是05-21)重命名为xxx.com.access.log20230521,并重新生成了一个空的xxx.com.access.log文件,用于继续写入日志,此时再写入的日志的日期已经是05-22了

然后05-23 00:00:00的时候执行一次脚本,通过mv命令把xxx.com.access.log日志(日期全是05-22)重命名为xxx.com.access.log20230522,并重新生成了一个空的xxx.com.access.log文件,用于继续写入日志,此时再写入的日志的日期已经是05-23了

。。。。。。

以此内推,结论是:每日凌晨0点把前一天的日志文件按日期重命名,并生成一个新的日志文件,用来写入当天的日志,而不是刚开始理解的按日期去xxx.com.access.log里面提取指定日期的日志了。

当然了,在重命名文件的时候,同步写入数据日期可能是第二天的数据(也就是xxx.com.access.log20230520文件里面最后一条数据是05-21的),或者数据丢失的情况,我们可以忽略不计哈。

 文章来源地址https://www.toymoban.com/news/detail-459765.html

到了这里,关于linux服务器,nginx日志切割保存的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 3节点ubuntu24.04服务器docker-compose方式部署高可用elk+kafka日志系统并接入nginx日志

    节点名称 IP 部署组件及版本 配置文件路径 机器CPU 机器内存 机器存储 Log-001 10.10.100.1 zookeeper:3.4.13 kafka:2.8.1 elasticsearch:7.7.0 logstash:7.7.0 kibana:7.7.0 zookeeper:/data/zookeeper kafka:/data/kafka elasticsearch:/data/es logstash:/data/logstash kibana:/data/kibana 2*1c/16cores 62g 50g 系统 800g 数据盘 Log-002 10.10.10

    2024年04月27日
    浏览(45)
  • Linux的服务器日志分析及性能调优

    作为网络安全和数据传输的重要环节,代理服务器在现代互联网中扮演着至关重要的角色。然而,在高负载情况下,代理服务器可能面临性能瓶颈和效率问题。本文将介绍如何利用Linux系统对代理服务器进行日志分析,并提供一些实用技巧来优化其性能。 1. 日志收集与分析

    2024年02月10日
    浏览(56)
  • [Linux服务器 ] nginx 配置图片静态访问方法

    一.  Nginx安装 1.更新软件包列表:打开终端,并使用以下命令更新软件包列表: sudo yum update 2.安装 EPEL 存储库:EPEL 存储库提供了额外的软件包,其中包括 Nginx。使用以下命令安装 EPEL 存储库: sudo yum install epel-release 3.安装 Nginx:使用以下命令安装 Nginx: sudo yum install nginx

    2024年02月14日
    浏览(49)
  • 在 【Linux Centos】下搭建 【Nginx Web】 服务器

    系统:Linux Centos 7.9 gcc 、c++、pcre、zlib、openssl等 添加内容

    2024年01月16日
    浏览(55)
  • 使用HTTP/2在Linux上的Nginx服务器进行优化

    随着互联网的发展,HTTP/2协议逐渐成为主流。与传统的HTTP/1.1相比,HTTP/2提供了更高的传输效率和更好的安全性。在Linux上使用Nginx服务器进行优化,我们可以充分利用HTTP/2的优势,提高网站的性能和用户体验。 1. 安装Nginx并启用HTTP/2 首先,确保你的Nginx服务器已经安装并正常

    2024年02月01日
    浏览(60)
  • Linux 常用操作命令(CentOS 7.0)- 故障定位:服务器负载、进程管理、日志分析

    系统经研发测试上线后,如果运行期间出现了BUG,需要对服务故障进行定位,一般会查看服务器负载、服务状态、进程管理、服务日志等。 本文以CentOS 7.0 操作系统上的命令操作作为示例进行记录。 #服务器负载 完整参见:http://www.laobingbiji.com/note/detail.html?note_id=20231115154337

    2024年01月17日
    浏览(69)
  • 使用Nginx作为反向代理服务器在Linux中的最佳实践

    在Linux环境下,Nginx因其高效性能、稳定性以及丰富的功能集而广泛用于作为反向代理服务器。以下是在Linux中使用Nginx作为反向代理服务器的最佳实践: 1. 安装与配置 首先,确保你的Linux发行版已经安装了Nginx。大多数Linux发行版都提供了Nginx的包管理工具。例如,在基于Deb

    2024年01月17日
    浏览(46)
  • logrotate对nginx做日志切割-实现按照每天切割

    logrotate程序是一个日志文件管理工具。用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到“转储”作用。可以节省磁盘空间。 通过在/etc/logrotate.d/ 目录下进行自定义配置相关参数,从而达到想要的切割日志方案。 1.检查当前系统是否存在logrotate rpm -qa logro

    2024年02月02日
    浏览(43)
  • Linux下Web服务器工作模型及Nginx工作原理详解

    在Linux环境下,Web服务器处理并发连接请求的工作模型主要有阻塞、非阻塞、同步、异步等方式。以下是对各种工作模型的浅析: 同步阻塞 I/O: 类比于在餐厅等饭,需要在取餐处等待,期间不能进行其他事情。 同步非阻塞 I/O: 类比于在餐厅等饭,可以进行其他事情,但需

    2024年02月03日
    浏览(42)
  • linux系统下如何使用nginx作为高性能web服务器

    ✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN新星创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开

    2024年04月14日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包