使用Bash脚本和Logrotate实现Nginx日志切割的方法

 更新时间:2024年05月16日 14:55:02   作者:我的名字o  
Logrotate是一个Linux系统上用来管理日志文件的工具,它可以定期轮转日志文件、压缩旧的日志文件以及删除过期的日志文件,这篇文章主要介绍了使用Bash脚本和Logrotate实现Nginx日志切割,需要的朋友可以参考下

Nginx是一个广泛使用的高性能Web服务器,它能够处理大量的并发连接,但同时也会生成大量的日志文件。为了有效管理这些日志文件并确保系统的正常运行,我们需要定期对Nginx的日志文件进行切割和归档。本文将介绍如何使用Bash脚本和Logrotate来实现Nginx日志的切割。

Bash脚本实现

假设Nginx的访问日志文件位于/var/log/nginx/access.log

#!/bin/bash
LOG_FILE="/var/log/nginx/access.log"
ARCHIVE_DIR="/var/log/nginx/archive"
# 判断归档目录是否存在,如果不存在则创建
if [ ! -d "$ARCHIVE_DIR" ]; then
    mkdir -p $ARCHIVE_DIR
fi
# 使用gzip压缩日志文件并移动到归档目录
DATE=$(date +"%Y%m%d%H%M%S")
mv $LOG_FILE "$ARCHIVE_DIR/access_$DATE.log"
gzip "$ARCHIVE_DIR/access_$DATE.log"
# 重新打开日志文件,以便Nginx继续写入新的日志
kill -USR1 $(cat /var/run/nginx.pid)

以上脚本的功能包括:

  • 检查归档目录是否存在,如果不存在则创建。
  • 将当前的访问日志文件移动到归档目录,并使用gzip进行压缩。
  • 向Nginx发送USR1信号,以便重新打开日志文件,使Nginx能够继续写入新的日志。

Logrotate实现

Logrotate是一个Linux系统上用来管理日志文件的工具,它可以定期轮转日志文件、压缩旧的日志文件以及删除过期的日志文件。Logrotate通过配置文件定义轮转规则,并由系统的cron任务周期性地执行。

假设Nginx的有两个访问日志文件分为位于

  • /apps/openresty/nginx/logs/head/access.log
  • /apps/openresty/nginx/logs/domain/access.log。

在/etc/logrotate.d目录下创建一个名为nginx的文件,并添加以下内容

/apps/openresty/nginx/logs/head/access.log
/apps/openresty/nginx/logs/domain/access.log
{
        daily                        # 每天切割
        missingok                    # 忽略错误
        rotate 7                    # 最多保留多少个存档
        compress                     # 切割后且压缩
        delaycompress                # 延迟压缩动作在下一次切割
        notifempty                   # 日志为空就不切割
        create 640 qhdrsj qhdrsj     # 切割的文件权限
        sharedscripts                # 共享脚本,结果为空
        postrotate                   # 收尾动作,重新生成nginx日志
                if [ -f /apps/openresty/nginx/logs/domain/nginx.pid ]; then
                        kill -USR1 `cat /apps/openresty/nginx/logs/domain/nginx.pid`
                fi
                if [ -f /apps/openresty/nginx/logs/head/nginx.pid ]; then
                        kill -USR1 `cat /apps/openresty/nginx/logs/head/nginx.pid`
                fi
        endscript                    # 结束动作
}

以上配置的含义如下:

  • daily:每天轮转一次日志。
  • missingok:如果日志文件不存在,则不报错。
  • rotate 7:保留最近的7个归档文件。
  • compress:使用gzip压缩轮转后的日志文件。
  • delaycompress:延迟压缩,直到下一次轮转时才压缩上一次的日志文件。
  • notifempty:如果日志文件为空,则不轮转。
  • create:设置新创建的日志文件的权限和属主。
  • sharedscripts:在所有日志文件轮转之后执行一次脚本。
  • postrotate和endscript:在轮转后执行的内容。

到此这篇关于使用Bash脚本和Logrotate实现Nginx日志切割的文章就介绍到这了,更多相关Nginx日志切割内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • nginx多location配置实例代码

    nginx多location配置实例代码

    公司测试环境使用nginx部署多个前端项目,下面这篇文章主要给大家介绍了关于nginx多location配置的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • Ubuntu使用nginx搭建webdav文件服务器的详细过程

    Ubuntu使用nginx搭建webdav文件服务器的详细过程

    今天通过本文给大家分享Ubuntu使用nginx搭建webdav文件服务器的详细过程,在这小编提示大家在安装nginx时需要先安装nginx-full,具体安装方法跟随小编一起通过本文学习下吧
    2021-05-05
  • Nginx配置WebSocket反向代理的实现示例

    Nginx配置WebSocket反向代理的实现示例

    本文主要介绍了Nginx配置WebSocket反向代理的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Nginx防盗链的配置方法

    Nginx防盗链的配置方法

    这篇文章主要介绍Nginx下的防盗链的配置方法,需要的朋友可以参考下
    2013-04-04
  • Nginx+Keepalived实现双机主备的方法

    Nginx+Keepalived实现双机主备的方法

    这篇文章主要介绍了Nginx+Keepalived实现双机主备的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Nginx虚拟主机的六种配置(最全)

    Nginx虚拟主机的六种配置(最全)

    利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程,本文主要介绍了Nginx虚拟主机的六种配置,具有一定的参考价值,感兴趣的可以了解下
    2023-08-08
  • Nginx服务器安装及配置文件与使用详解

    Nginx服务器安装及配置文件与使用详解

    这篇文章主要介绍了Nginx服务器安装及配置文件与使用详解 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • 浅析Nginx配置文件中的变量的编写使用

    浅析Nginx配置文件中的变量的编写使用

    这篇文章主要介绍了Nginx配置文件中的变量的编写使用,包括从常用的rewrite等方面来深入变量的相关定义,需要的朋友可以参考下
    2016-01-01
  • Nginx负载均衡配置简单配置方法

    Nginx负载均衡配置简单配置方法

    Nginx作为负载均衡服务器,用户请求先到达nginx,再由nginx根据负载配置将请求转发至不同的Web服务器。下面通过本文给大家分享Nginx负载均衡配置简单配置方法,需要的的朋友参考下吧
    2017-08-08
  • 生产环境之Nginx高可用方案实现过程解析

    生产环境之Nginx高可用方案实现过程解析

    这篇文章主要介绍了生产环境之Nginx高可用方案实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08

最新评论