当前位置: 首页 > news >正文

Docker + Nginx + Logrotate 日志管理与轮换实践

概述与背景
  • Docker 容器化环境中 Nginx 日志管理的挑战
  • Logrotate 的作用与必要性
  • 结合场景的实际需求(如日志切割、压缩、归档)

Docker 环境下的 Nginx 日志配置
  • Nginx 日志路径与 Docker 数据卷映射
volumes:- ./nginx/logs:/var/log/nginx

Logrotate 基础配置

在 /etc/logrotate.d/目录下 新增 nginx-web 这个文件可以随意命名

vim /etc/logrotate.d/nginx-web
  • Logrotate 核心配置参数说明
    daily                  # 指定日志轮换周期为每天(logrotate 每天执行一次轮换)。rotate 15              # 保留最近的 15 个轮换日志文件,超过 15 个的将被删除。compress               # 压缩旧的日志文件,以节省存储空间(默认使用 gzip 压缩)。missingok              # 如果日志文件丢失,不会报错。即使日志文件不存在,也不会阻止日志轮换。notifempty             # 如果日志文件为空,则不进行轮换。create 777 root root   # 创建新的日志文件时,设置权限为 777,并且设置拥有者为 root,用户组为 root。postrotate             # 在日志文件轮换之后执行的脚本。可以用来发送信号给服务来让其重新打开新的日志文件。docker kill --signal=USR1 nginx-web  # 向 nginx-web 的 Docker 容器发送 USR1 信号,让NGINX 重新打开日志文件。   endscript              # 结束 postrotate 脚本的定义。
}
nginx-web配置文件

/storage/docker/nginx/log/access.log 这个目录不用多介绍 nginx的日志文件全路径 error.log同理

/storage/docker/nginx/log/access.log {daily                  rotate 15               compress              missingok             notifempty            create 777 root rootpostrotatedocker kill --signal=USR1 nginx-webendscript
}/storage/docker/nginx/log/error.log {daily                  rotate 60               compress              missingok             notifempty            create 777 root rootpostrotatedocker kill --signal=USR1 nginx-webendscript
} 
手动测试
logrotate -f /etc/logrotate.d/nginx-web

测试结果正常

在这里插入图片描述

查看access.log是否正常

确认docker kill --signal=USR1 nginx-web命令是否生效
测试结果正常!!
在这里插入图片描述

配置定时任务 crontab
 crontab -e

添加 (@daily意思为每天0点执行)

@daily /usr/sbin/logrotate -f /etc/logrotate.d/nginx-web

结束!!!

http://www.xdnf.cn/news/906805.html

相关文章:

  • Spring Boot消息系统开发指南
  • 湖北理元理律师事务所:构建科学债务优化体系的四重维度
  • 6.6本日总结
  • 【办公类-104-01】20250606通义万相50分一天用完,通义万相2.1专业版测试
  • 二分算法
  • 基于ReAction范式的问答系统实现demo
  • 多模态大语言模型arxiv论文略读(111)
  • vue生成二维码图片+文字说明
  • 猜字符位置游戏-position gasses
  • 数列运算中的常见错因分析
  • 使用WebSocket实时获取印度股票数据源(无调用次数限制)实战
  • Python训练营-Day23-Pipeline
  • Tika Server:企业级文档内容解析的轻量级服务化方案
  • js树形菜单功能总结
  • AT2659_GNSS低噪声放大器芯片
  • 字节推出统一多模态模型 BAGEL,GPT-4o 级的图像生成能力直接开源了!
  • MySQL的优化部分介绍
  • 语音合成之十九 为什么对数行列式的值可以作为Flow-based模型loss?
  • 【信息系统项目管理师-案例真题】2025上半年(第二批)案例分析答案和详解(回忆版)
  • 蓝牙攻防实战指南:发现隐藏设备
  • 【更新至2024年】2000-2024年上市公司财务困境MertonDD模型数据(含原始数据+结果)
  • LangChain【5】之工具调用:连接大模型与现实世界的桥梁
  • C#中的密封类与静态类:特性、区别与应用实例
  • (力扣)80. 删除有序数组中的重复项 II
  • Seed1.5-VL登顶,国产闭源模型弯道超车丨多模态模型5月最新榜单揭晓
  • 计算机视觉顶刊《International Journal of Computer Vision》2025年5月前沿热点可视化分析
  • C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
  • java复习 03
  • css元素的after制作斜向的删除线
  • 【Go面试陷阱】对未初始化的chan进行读写为何会卡死?