nginx 日志切割

devtools/2025/3/20 9:33:50/

文章目录

    • Nginx 日志切割基础概念
    • 相关优势
    • 类型
    • 应用场景
    • 实现方法
    • 遇到的问题及解决方法

Nginx 日志切割基础概念

Nginx 日志切割是指定期将 Nginx 的访问日志和错误日志分割成多个文件,以便于管理和分析。日志切割有助于防止日志文件过大,影响服务器性能,并且便于进行日志归档和分析。

相关优势

  1. 性能优化:避免单个日志文件过大,减少磁盘I/O压力
  2. 易于管理:分割后的日志文件更易于备份和归档。
  3. 便于分析:可以针对特定时间段的日志进行分析,提高问题排查效率。

类型

  1. 按大小切割:当日志文件达到指定大小时进行切割。
  2. 按时间切割:按天、小时等时间单位进行日志切割

应用场景

  1. 高流量网站:需要频繁处理大量访问请求的网站。
  2. 日志分析:需要定期分析日志数据以监控系统性能和安全状况。
  3. 合规性要求:某些行业对日志保存有特定的时间要求和格式。

实现方法

1、使用 logrotate工具

logrotate是一个常用的日志管理工具,可以配置自动切割 Nginx 日志。

配置示例:

/var/log/nginx/*.log {dailymissingokrotate 14compressdelaycompressnotifemptycreate 0640 www-data admsharedscriptspostrotate[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`endscript
}

解释:

daily:每天切割一次。
rotate 14:保留最近14天的日志文件。
compress:压缩旧的日志文件。
create 0640 www-data adm:创建新日志文件时设置权限和所有者。
postrotate:切割后重新加载 Nginx 配置。

2、使用脚本手动切割
也可以编写自定义脚本来实现日志切割

示例脚本:

#!/bin/bash
#Nginx日志文件所在目录
LOG_PATH=/data/nginx/logs/
#获取昨天的日期
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
#获取pid文件路径
PID=/var/run/nginx.pid
cd ${LOG_PATH}
#分割日志
mv access.log access-${YESTERDAY}.log
tar -zcvf access-${YESTERDAY}.log.tar.gz access-${YESTERDAY}.log --remove-files
#向Nginx主进程发送USR1信号,重新打开日志文件
kill -USR1 `cat ${PID}`

解释:

检查日志文件大小,如果超过10MB,则进行切割。
使用时间戳命名新文件,并重新创建原日志文件。
发送 USR1 信号给 Nginx 进程,使其重新打开日志文件。

遇到的问题及解决方法

日志切割后 Nginx 不再写入新日志
原因:Nginx 进程可能没有正确重新打开日志文件。
解决方法:
确保postrotate脚本中发送了正确的信号(如 USR1)给 Nginx 进程。
检查 Nginx 配置文件中是否有错误,导致无法重新打开日志文件。

日志文件权限问题
**原因:**切割后的日志文件权限设置不正确,导致 Nginx 无法写入。
解决方法:
logrotate配置中使用create选项设置正确的权限和所有者。
确保 Nginx 进程运行的用户有权限写入日志文件。
通过以上方法,可以有效实现 Nginx 日志切割,并解决常见的问题。


http://www.ppmy.cn/devtools/168588.html

相关文章

折叠树报表

折叠树报表中包含了三种信息: 1.树组织信息-可展开、收拢 2.节点的统计信息(汇总求和) 3.每个节点对应的数据信息 一、准备数据 mysql8 数据库中存在两张表 org和store表。 org表和部分数据如下,其中orgname是组织的名称,codepath是完整的组织代码,seq是每个节点的顺序,可…

正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-6.2uboot启动流程-lowlevel_init,s_init,_main函数执行

前言: 本文是根据哔哩哔哩网站上“Arm(iMX6U)Linux系统移植和根文件系统构键篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用: …

Java集合

文章目录 集合的理解和好处数组集合 集合的框架体系Collection 接口和常用方法Collection 接口实现类的特点Collection 接口遍历元素方式1-使用IteratorCollection 接口遍历对象方式2-for 循环增强 List 接口和常用方法List 接口基本介绍List 接口的常用方法List 接口课堂练习L…

Linux 文件操作-标准IO函数4-fseek设置文件偏移量、ftell获取当前偏移量、rewind使文件偏移量(为0)定位到开头

目录 1.fseek设置文件偏移量 2.ftell获取当前偏移量 3.rewind使文件偏移量(为0)定位到开头 4.程序验证 1.fseek设置文件偏移量 函数原型: /* 功能:设置文件位置指针的偏移量 参数: stream:文件指针 of…

言简意赅 Linux部署elasticsearch7.15.2

目录 下载 zip 包 在 linux 里面解压 进入bin目录 创建用户useres 授权到es目录 切换到useres用户 bin 目录启动 配置 端口开放 配置 jdk 单节点启动 一定要配置 说明成功 byd折磨了我两天 下载 zip 包 通过网盘分享的文件:elasticsearch-7.15.2-linux…

【SpringCloud】服务注册/服务发现

文章目录 前言什么是注册中心CAP理论Eureka搭建Eureka Server服务注册服务发现 前言 在生活中,我们不可避免地与各种医院、学校、政府等机构打交道,那么要想与这些机构取得联系,就需要知道这些机构的电话号码,但是这些机构的电话…

掌握些许 IPv6 要点,windows 远程桌面安全便利两相宜!

掌握这些要点,Windows 远程桌面安全便利两相宜! 在日常办公中,许多人会用到 Windows 系统的远程桌面功能。但在实际使用时,会遇到内网计算机难以通过运营商的动态 ip 与多层 NAT 向互联网暴露端口的技术问题,和计算机…

Oracle ASM Failgroup故障组

Oracle ASM Failgroup故障组 1. 故障组的核心作用2. 故障组的配置规则3. 故障组的设计最佳实践4. 故障组的实际示例场景1:普通冗余(2个故障组)场景2:高冗余(3个故障组,跨数据中心) 关键注意事项…