当前位置:首页 > 技术文章 > 正文内容

轻松实现Nginx访问日志按天归档,一键脚本助你高

arlanguage4个月前 (12-25)技术文章35

在运维工作中,Nginx的访问日志是我们了解服务器状态、分析用户行为的重要依据。然而,随着时间的推移,日志文件会不断增长,这不仅占用了大量的磁盘空间,还给日志分析和管理带来了诸多不便。因此,定期切割和归档Nginx的访问日志成为了一项必要的工作。

下面,我将为大家介绍一个简单实用的Bash脚本,它能够帮助你轻松实现Nginx访问日志的按天切割和归档。

脚本内容:


#!/bin/bash  


# 定义日志存放目录  
LOG_DIR=/usr/local/nginx/logs  
  
# 获取昨天的日期  
YESTERDAY_TIME=$(date -d "yesterday" +%F)  
  
# 定义按月归档的日志目录格式  
LOG_MONTH_DIR=$LOG_DIR/$(date +"%Y-%m")  
  
# 定义需要切割的日志文件列表  
LOG_FILE_LIST="default.access.log"  
  
# 循环处理每一个日志文件  
for LOG_FILE in $LOG_FILE_LIST; do  
    # 如果按月归档的日志目录不存在,则创建它  
    [ ! -d $LOG_MONTH_DIR ] && mkdir -p $LOG_MONTH_DIR  
      
    # 将日志文件移动到按月归档的目录中,并在文件名后添加昨天的日期  
    mv $LOG_DIR/$LOG_FILE $LOG_MONTH_DIR/${LOG_FILE}_${YESTERDAY_TIME}  
done  
  
# 发送USR1信号给Nginx主进程,使其重新打开日志文件  
kill -USR1 $(cat /var/run/nginx.pid)

使用方法:

  1. 将上述脚本保存为一个文件,例如log_rotate.sh。
  2. 赋予脚本执行权限:chmod +x log_rotate.sh。
  3. 通过cron定时任务每天执行该脚本,例如:0 0 * * * /path/to/log_rotate.sh(每天凌晨0点执行)。

注意事项:

  • 请确保脚本中的LOG_DIR和/var/run/nginx.pid路径与你的Nginx配置一致。
  • 如果你的Nginx配置中使用了多个access_log,请在LOG_FILE_LIST中添加相应的日志文件名,多个文件名之间用空格分隔。
  • 该脚本使用了date命令的-d选项来获取昨天的日期,这在某些操作系统上可能不可用。如果遇到问题,请根据你的操作系统调整日期获取方式。
  • 脚本执行完毕后,Nginx会自动重新打开新的日志文件进行写入,而旧的日志文件则被归档到指定目录。你可以根据需要调整归档目录的结构和命名规则。

扫描二维码推送至手机访问。

版权声明:本文由AR编程网发布,如需转载请注明出处。

本文链接:http://www.arlanguage.com/post/461.html

标签: nginx运维
分享给朋友:

“轻松实现Nginx访问日志按天归档,一键脚本助你高” 的相关文章

nginx支持跨域的方法 nginx配置支持跨域

在nginx的配置文件中添加允许跨域的响应头。参考nginx官方文档,添加响应头的方法如下:在conf文件的server作用域中添加如下响应头:server { listen 80; # 其他配置... # 允许跨域 add_header Access-Control-Allow-...

nginx命令——学习记录 nginx详细教程

nginx命令--学习记录查看80端口是否被占用netstat -ntlpnginx命令#/usr/local/nginx/sbin/nginx 启动命令#/usr/local/nginx/sbin/nginx -t 检测配置文件 #/usr/local/nginx/sbin/ngin...

Nginx安全相关配置常用教程 nginx安全策略

1. 限制请求速度设置 Nginx、Nginx Plus 的连接请求在一个真实用户请求的合理范围内。比如,如果你觉得一个正常用户每两秒可以请求一次登录页面,你就可以设置 Nginx 每两秒钟接收一个客户端 IP 的请求(大约等同于每分钟30个请求)。limit_req_zone $binary_re...

一般人绝对无法发现的nginx锅

nginx热启动:nginx -s reloadPS:要在/etc/profile环境变量PATH里配置nginx的路径。配置完执行 source /etc/profile 让变量生效。 一次部署,同样的前端代码,放到了nginx里面运行,但是有一个模块全部页面都报这个错误,其他模块正常展示。以前遇...

Nginx专题(1):Nginx之反向代理及配置

一、Nginx概念解读对于新事物的理解,最好的方式就是从概念入手,本文作为《Nginx专题》系列文章的第一篇,先从Nginx的名称开始来分解这个神秘的引擎。Nginx,是engine X的缩写,发音也是'engine x',2004年由俄罗斯大神伊戈尔·赛索耶夫开发,提供了高性能而易...

现代配置指南——YAML 比 JSON 高级在哪

一直以来,前端工程中的配置大多都是 .js 文件或者 .json 文件,最常见的比如:package.jsonbabel.config.jswebpack.config.js这些配置对前端非常友好,因为都是我们熟悉的 JS 对象结构。一般静态化的配置会选择 json 文件,而动态化的配置,涉及到引入...