当前位置: 首页 > 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.lqws.cn/news/181603.html

相关文章:

  • 护网行动面试试题(1)
  • ㊗️高考加油
  • 高考:如何合理选择学科、专业以及职业
  • K7 系列各种PCIE IP核的对比
  • 机器学习算法时间复杂度解析:为什么它如此重要?
  • halcon 透视矩阵
  • day48 python通道注意力
  • vb监测Excel两个单元格变化,达到阈值响铃
  • Java设计模式之状态模式详解
  • pikachu靶场通关笔记17 CSRF关卡03-CSRF(Token)
  • Kerberos面试内容整理-开源 Kerberos 实现(MIT Kerberos、Heimdal 等)
  • ADI的BF609双核DSP怎么做开发,我来说一说(四)CMOS摄像头采集
  • Nuxt.js 布局系统详解:构建可复用页面框架
  • Mac下Android Studio扫描根目录卡死问题记录
  • Vue.js 生命周期全面解析
  • 开源投屏工具Escrcpy的使用教程
  • MySQL安装与配置详细讲解
  • 五、【ESP32开发全栈指南:深入解析ESP32 IDF中的WiFi STA模式开发】
  • Fullstack 面试复习笔记:Spring / Spring Boot / Spring Data / Security 整理
  • arcpy与扩展模块
  • win中将pdf转为图片
  • HTTP 请求协议简单介绍
  • 12-Oracle 23ai Vector 使用ONNX模型生成向量嵌入
  • C++.OpenGL (10/64)基础光照(Basic Lighting)
  • Nuxt.js 中的路由配置详解
  • CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
  • 【WebSocket】SpringBoot项目中使用WebSocket
  • 【Linux 学习计划】-- 简易版shell编写
  • 【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
  • html 滚动条滚动过快会留下边框线