docker部署nginx下日志自动切割方法

news2024/11/27 4:28:59

前言:nginx采用docker部署,简单方便,但出现一个问题,就是日志没有自动切割,导致access.log 无限增大。如果非docker安装,则nginx的日志默认有切割的,那docker为何没有呢,最后发现,nginx容器里面没有 logrotate 服务(logrotate: command not found)

服务器环境:centos 7
nginx的docker运行命令:

docker run -d --name nginx --restart always --net host -v /opt/common/nginx/nginx.conf:/etc/nginx/nginx.conf -v /opt/common/nginx/html:/usr/share/nginx/html -v /opt/common/nginx/logs:/var/log/nginx -v /opt/common/nginx/conf.d:/etc/nginx/conf.d -e TZ="Asia/Shanghai" nginx:1.24.0

其中服务器本地日志映射目录是 /opt/common/nginx/logs

以下搜集了几种日志切割方式:

  • 1 nginx配置map日期
  • 2 脚本切割
  • 3 配置 logrotate

1 nginx配置map日期

在conf.d 目录下,新建 logdate.conf 文件(nginx重启会自动加载的)
内容是:

map $time_iso8601 $logdate {
    default 'date-not-found';
    '~^(?<ymd>\d{4}-\d{2}-\d{2})' $ymd;
}

然后在nginx.conf 的日志配置如下:

access_log  /var/log/nginx/access-$logdate.log  main;

原来的默认配置是:
access_log /var/log/nginx/access.log main;

这时到了第二天就会自动生成新的log文件
注意:映射出来的存log的文件夹logs需要配一下权限,因为nginx要创建文件需要权限
例如:赋给nginx权限
chown -R nginx:nginx logs
生成之后,文件长这样:
在这里插入图片描述

该方法,都是按每天归整,缺点是每次会走map一次日期,会牺牲一点点性能,此外,定期清除需要再额外写个清除脚本(清除脚本好说)

2 脚本切割

该方法是写个脚本,定时凌晨12点将日志切割归档,这个方法相对比较简单

#!/bin/bash
LOGS_PATH=$1
DAYS=$2
YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)
#按天切割日志
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log
#向 Nginx 主进程发送 USR1 信号,重新打开日志文件,否则会继续往mv后的文件写内容,导致切割失败.
kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'`
#删除配置的N天前的日志
cd ${LOGS_PATH}
find . -mtime +${DAYS} -name "*20[1-9][3-9]*" | xargs rm -f
exit 0

将该脚本保存到 cut_nginx_log.sh,找个地方放
给予执行权限:
chmod +x cut_nginx_log.sh

然后编辑定时任务:
crontab -e

输入:

01 00 * * * /opt/common/nginx/logs/cut_nginx_log.sh /opt/common/nginx/logs/ 120

这个定时任务是,每天凌晨01秒,开始执行该脚本,脚本第一个参数 /opt/common/nginx/logs/ 表示日志的目录,第二个参数120表示日志保留120天,即清理120天之前的日志

这个方法是切割与定期删除一起,比较简单方便

3 配置 logrotate

既然nginx容器的logrotate服务不可用,那么就利用docker宿主机的logrotate服务,这个服务是centos7默认安装的,即用服务器本地的logrotate

/opt/common/nginx/logs/*.log {
        daily
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 nginx adm
        sharedscripts
        postrotate
                kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'`
        endscript
}

将以上脚本保存在 /etc/logrotate.d/nginx

然后添加到定时任务里面:
echo “59 23 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx >/dev/null 2>&1” > /etc/crontab
或者执行 crontab -e ,然后以下编辑进去
59 23 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx >/dev/null 2>&1

这个定时任务是,每天23:59 开始切割,并做压缩
结果是:

在这里插入图片描述

此外,error.log 也会切割,脚本具体参数意义在此不做详述

最后总结:
以上三种,脚本方式是比较简单,可根据情况进行配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1028942.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

科普:什么是视频监控平台?如何应用在场景中?

随着科技的发展&#xff0c;监控无处不在&#xff0c;就像一张密不透风的网&#xff0c;将生活中的角角落落都编织在一起。可是&#xff0c;你真的知道什么是安防视频监控平台吗&#xff1f;它可不止是一个简单的通电摄像头&#xff0c;如今的视频监控平台&#xff0c;涵盖了无…

挂件板死机刷固件

用ESP32-DevKitC_V4刷固件的工具flash_download_tool_3.9.5.exe 挂件板子端口接线依次为V&#xff08;接3V3&#xff09;、R&#xff08;接TXD&#xff09;、T&#xff08;接RXD&#xff09;、G&#xff08;接GND&#xff09;、L&#xff08;悬空&#xff09; 1.选择ESP8266&…

C# ORM框架,freesql,mysql数据库

使用C# freesql技术查询mysql数据库环境搭建 开发环境&#xff1a;vs2022 .NET框架&#xff1a;.NET4.0&#xff08;winform&#xff09; 开发环境搭建步骤&#xff1a; 1.在nuget包中搜索&#xff1a;FreeSql.Provider.MySql&#xff0c;并点击安装 2.在后台编写连接数据库…

【UE 粒子练习】07——创建动画拖尾类型粒子

效果 步骤 1. 将动画序列“Idle_ModifyBones”添加到场景中 2. 新建一个材质&#xff0c;命名为“Mat_AnimTrails” 材质混合模式设置为半透明&#xff0c;着色模型设置为无光照&#xff0c;设置材质为双面 材质节点如下 3. 新建一个粒子系统&#xff0c;命名为“P_AnimTrail”…

ChatGLM 大模型炼丹手册-参数微调

序言 回顾上一篇( 大模型炼丹手册-理论篇)的内容,大模型的整个训练流程,分为预炼、精炼和强炼三个阶段,并具有以下特点: 预炼:需要海量灵材、真火,炼制时间长,非豪门巨富难以承受;精炼:仅需少量灵材、真火即可完成,炼制时间短,性价比高;强炼:炼制过程复杂、炼制…

《Linux操作系统实战》| 面试了两个实习生,Linux 基本命令都不会(一)

&#x1f604;作者简介&#xff1a; 小曾同学.com,一个致力于测试开发的博主⛽️&#xff0c;主要职责&#xff1a;测试开发、CI/CD 如果文章知识点有错误的地方&#xff0c;还请大家指正&#xff0c;让我们一起学习&#xff0c;一起进步。&#x1f60a; 座右铭&#xff1a;不想…

ITIL是什么?

ITIL是什么&#xff1f; 1. ITIL是什么&#xff1f;2. ITIL 4个版本2.1 ITIL V1 - 关注IT基础架构的管理2.2 ITIL V2 - 以流程为核心&#xff08;5个服务支持流程和5个服务交付流程&#xff09;2.3 ITIL V3 - 服务生命周期2.4 ITIL 4 - 最新版本&#xff0c;强调价值创造2.5 IT…

Spring Cloud Alibaba Nacos 2.2.3 (3) - 集群 部署

1&#xff0c;根据 [下载与数据库配置] 配置好数据源(https://blog.csdn.net/ai_lian_shuo/article/details/133130249) 2&#xff0c;复制安装包多份&#xff0c;由于Nacos 服务之间通过 Raft 算法保证一致性&#xff0c;所以 Nacos 部署的节点数最好设置为>3 的奇数 3&a…

用于准确量化颅面对称性和面部生长的 3D 头影测量方案(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

面试第一个进去会不会当炮灰?

首先要说的就是&#xff0c;面试时第一个进入房间并不一定会成为“炮灰”&#xff0c;因为面试官会对你的面试表现进行综合评估&#xff0c;而不仅仅是因为你比其他面试者更早进入房间。因为在面试过后都会给上一个求职者打分&#xff0c;所以不存在说前面进去的就会被面试官打…

Kafka-UI

有多款kafka管理应用&#xff0c;目前选择的是github上star最多的UI for Apache Kafka。 关于 To run UI for Apache Kafka, you can use either a pre-built Docker image or build it (or a jar file) yourself. UI for Apache Kafka is a versatile, fast, and lightweight…

Tungsten Fabric Rabbitmq故障处理

开源SDN软件Tungsten Fabric&#xff08;以下简称TF&#xff09;有时莫名其妙出现服务宕机情况。 使用TF自带工具contrail-status排查&#xff0c;多数时候是rabbitmq出现宕机&#xff0c;或者某个组件连接rabbitmq出错。 本次仅排查、处理rabbitmq问题。 1. 查rabbitmq日志发…

python进程和线程(05)

python进程和线程(05) 文章目录 python进程和线程(05)1 python进程和线程1.1 进程和线程概念1.2 并行执行1.3 核心使用语法_threading模块1.4 多线程编程1.4.1 案例单线程不能满足情况如下&#xff1a;1.4.2 多线程1.4.2.1 多线程创建语句1.4.2.2 案例 1.4.2 多线程传参使用1.4…

电影格式怎么转换mp4?电影格式转换教程

电影格式怎么转换mp4&#xff1f;平时喜欢看电影的小伙伴都知道&#xff0c;平时我们下载到的电影文件格式可谓是五花八门&#xff0c;如Mp4、Flv、AVI、WMV、MKV、MOV等。然而&#xff0c;相较于其他常用格式&#xff0c;MP4是一种使用最为广泛的视频格式&#xff0c;并且文件…

echarts另外存为图片

今天同事画了个Echarts,我看了下居然有下载功能&#xff01;&#xff01;&#xff01;&#xff01;&#xff08;之前一直不知道&#xff09; 这是原图&#xff0c;右上角有个下载功能&#xff0c; 下载后是这样的 貌似是没有了y轴的参数和x轴的参数&#xff0c;估计是可以配置的…

解决报错:Error:digital envelope routines::unsupported

antDesignPro版本&#xff1a;5.2.0 包管理工具&#xff1a;pnpm 本地pnpm dev&#xff08;用的node版本为18&#xff0c;18.15.0&#xff09;运行AntDesignPro后台项目时&#xff0c;控制台报错&#xff0c;截图如下。 解决方法&#xff1a;使用的node版本过高导致&#xff0…

ChatGPT批量写作文章软件

什么是ChatGPT批量写作文章。简单来说&#xff0c;它是一种使用ChatGPT技术的方法&#xff0c;可以帮助您批量生成各种类型的文章和内容。无论您是需要新闻报道、博客文章、产品描述、社交媒体帖子还是其他类型的内容&#xff0c;ChatGPT都能满足您的需求。它可以在极短的时间内…

利用亚马逊 云服务器 EC2 和S3免费套餐搭建私人网盘

网盘是一种在线存储服务&#xff0c;提供文件存储&#xff0c;访问&#xff0c;备份&#xff0c;贡献等功能&#xff0c;是我们日常中不可或缺的一种服务。很多互联网公司都为个人和企业提供免费的网盘服务。但这些免费服务都有一些限制&#xff0c;比如限制下载速度&#xff0…

微信成绩查询

在现代教育中&#xff0c;教师经常需要发布学生成绩&#xff0c;并方便学生查询。为了提高效率和便利性&#xff0c;开发一个微信学生成绩查询发布系统是一种不错的选择。本文将介绍如何开发这样一个系统&#xff0c;使教师能够轻松管理学生成绩&#xff0c;并让学生方便地查询…

附录一-pandas操作excel

文章参考 Python之如何使用pandas操作Excel表_1XXXXXXXXXXXXXXXXX1的博客-CSDN博客 我现在有一个 test.xlsx 文件&#xff0c;内容如下 目录 1 获取行列信息 2 获取单元格的值 3 改变单元格的值并保存到原文档 1 获取行列信息 pandas读取行号会不读取第一行 2 获取单…