Logrotate日志切割工具的应用与配置

Logrotate日志切割工具的应用与配置,以下是公司生产环境亲测,跳了不少的坑,最后已经部署到生产了,可放心使用

简介

Logrotate是一个在Unix和类Unix系统(如Linux)上用于管理日志文件的实用程序。它可以帮助系统管理员自动地对日志文件进行轮转、压缩和删除,以避免日志文件不断增大占用过多的磁盘空间。

Logrotate的主要功能包括:
  1. 轮转日志文件:Logrotate可以按照一定的规则和时间间隔,将日志文件从当前时间点开始轮转,生成新的日志文件,同时保留一定数量的旧日志文件。这样可以让日志文件保持在一个可控的大小范围内,避免日志文件无限增长。
  2. 压缩日志文件:Logrotate可以对轮转后的日志文件进行压缩,以进一步减少磁盘空间的使用。压缩可以有效地减小日志文件的大小,同时保留文件的可读性,方便系统管理员进行故障排查和系统监控。
  3. 删除旧日志文件:Logrotate可以设置保留策略,自动删除过期或者不再需要的旧日志文件。这样可以避免过多的旧日志文件占用过多的磁盘空间。
  4. 配置灵活:Logrotate的配置文件可以根据不同的需求进行定制,可以灵活地设置日志文件的轮转规则、压缩方式、保留策略等。这使得Logrotate可以适应不同的系统和应用场景。

Logrotate是一个非常实用的工具,可以帮助系统管理员更好地管理和维护系统日志。通过Logrotate,系统管理员可以有效地控制日志文件的大小和数量,保证系统的稳定性和性能。

产生背景

1.线上nginx日志一天切割一次日志量10G左右,元旦至春节期间可达20G左右,服务器存储负载无法承受

2.切割后的日志不压缩,同步日志时间很长,日志归档相当不便,并且写入速度相当惊人,由此引发的思考是否要切割,是否要压缩

3.由于nginx产生的日志单体都比较大,为节省存储空间,方便查看,故此引入Logrotate做日志轮转切割处理

4.logrotate为linux原生工具,并且配合定时任务,稳定效果好,不存在安全问题

宗上所述,将nginx日志做切割、同步、删除处理,由此引入Logrotate

线上nginx日志现状:

测试

测试环境测试

测试节点:172.16.60.41

测试目录:/home/nginx/logs

测试时长:一周

测试用例:

测试问题一:执行脚本的时候清空原文件并压缩

测试问题二:压缩时间

测试问题三:压缩后的大小

测试问题四:压缩后的文件解压后是否与原文件大小和内容全部相同

测试问题五:在持续写入的情况下是否可以截断并压缩,如果不能需要先备份

测试问题六:是否按照规定周期压缩

测试问题七:是否需要设置定时任务

测试问题八:大数据量时操作时的效率问题

测试问题九:数据完整性

配置脚本:
/usr/local/nginx/logs/*.log {                           #日志文件所在的路径
        daily                                           #每天进行日志分割
        missingok                                       #在日志转储期间,任何错误将被忽略
        rotate 365                                      #保留365个备份
        compress                                        #通过gzip压缩转储以后的日志
        delaycompress                                   #delaycompress和compress一起使用时,转储的日志文件到下一次转储时才压缩,即这次切割的日志不压缩
        dateext                                         #日志后面带时间,如:nginx.access.log-20190516
        dateformat -%Y%m%d%s                            #日志时间格式
        dateyesterday                                   #如果定时任务时间设置的是0点就要配置此项,不然切割的内容是昨天的但是日志名却是当天的.
        notifempty                                      #当日志文件为空时,不进行轮转
        create 644 root root                            #轮转时指定创建新文件的属性
        sharedscripts                                   #运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本
            postrotate
                if [ -f /usr/local/nginx/nginx.pid ]; then
                    kill -USR1 `cat /usr/local/nginx/nginx.pid`
                fi
            endscript
}
定时任务:
#每天中午12点和0点各执行一次,可根据日志量调整时间
0 12,0 */1 * * /sbin/logrotate -f /etc/logrotate.d/nginx                              

测试结果:

#加了备份参数后源文件会被截断并清空后继续写入正常,截断后的文件压缩正常

#130M文件压缩需2秒,20G文件压缩大概需要3分钟,1G大小压缩不到10秒压缩后大小为1M

#130M文件压缩后大小为400k,20G文件压缩后大小为20M,根据写入内容不同稍有误差,后经实际信息测试误差在3倍左右

#经测试解压后文件大小相同

#测试中在持续写入的过程中可以正常截断压缩,7个文件每个300M生成压缩文件需要10几秒

#源文件inode号未变

#需要设置定任务并用绝对路径

#30个230M的文件执行一分钟,压缩后单个文件大小700K

#测试数据完整性得出的结论为,多次测试数据完整并无丢失现象出现

生产环境测试:

测试节点:172.16.4.116

测试目录:/home/nginx/logs

压缩比:1:36

脚本和定时任务同测试环境相同

结论:

测试结果与测试环境结果相同

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

官宣定档 | 3大主题论坛重磅行业颁奖,CGT Asia 2024第五届亚洲细胞与基因治疗创新峰会特色亮点抢先看

细胞与基因治疗代表着未来医学发展的趋势,随着技术的不断更新与发展与支持政策的持续推出,细胞与基因治疗产业的希望被无限扩大,自第一批细胞治疗与基因治疗产品上市到如今,行业已经进入快车道,步入高速发展期&#xf…

如何确保消息不会丢失

本篇文章大家还可以通过浏览我的博客阅读。如何确保消息不会丢失 - 胤凯 (oyto.github.io)很多人刚开始接触消息队列的时候&#xff0c;最经常遇到的一个问题就是丢消息了。<!--more-->对于大部分业务来说&#xff0c;丢消息意味着丢数据&#xff0c;是完全无法接受的。 …

C语言--给定一行字符串,获取其中最长单词【图文详解】

一.问题描述 给定一行字符串,获取其中最长单词。 比如&#xff1a;给定一行字符串&#xff1a; hello wo shi xiao xiao su 输出&#xff1a;hello 二.题目分析 “打擂台算法”&#xff0c;具体内容小伙伴们可以参考前面的内容。 三.代码实现 char* MaxWord(const char* str)…

CMakeLists.txt基础指令与cmake-gui生成VS项目的步骤

简介 本博客主要介绍cmake的基本指令&#xff0c;同时&#xff0c;很多使用Visual Studio小白从Gitbub下载项目源码后&#xff0c;看到CMakeLists.txt&#xff0c;不知道如何使用Visual Studio编译源码&#xff1b;针对以上问题&#xff0c;做一下简单操作与解释&#xff0c;方…

c语言-数据结构-堆

目录 一、二叉树 1、二叉树的概念 2、完全二叉树和满二叉树 3、完全二叉树的顺序存储 二、堆 2、堆的概念与结构 3、堆的创建及初始化 4、堆的插入&#xff08;小堆&#xff09; 5、堆的删除 6、显示堆顶元素 7、显示堆里的元素个数 8、测试堆的各个功能 9、 实现堆…

零代码编程:用ChatGPT批量转换多个视频文件夹到音频并自动移动文件夹

有很多个视频文件夹&#xff1a; 要全部转成音频&#xff0c;然后复制到另一个文件夹。 在ChatGPT中输入如下提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个批量将Mp4视频转为Mp3音频的任务&#xff0c;具体步骤如下&#xff1a; 打开文件夹&#xff1a;…

机器学习 天气识别

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营](https://mp.weixin.qq.com/s/Nb93582M_5usednAKp_Jtw) 中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制](https://mtyjkh.blog.csdn.net/)** >- **&#x1f680;…

matlab层次分析法模型及相关语言基础

发现更多计算机知识&#xff0c;欢迎访问Cr不是铬的个人网站 代码放在最后面! 这篇文章是学习层次分析法模型的笔记。 1.什么时候用层次分析法 层次分析法是建模比赛中最基础的模型之一&#xff0c;其主要用于解决评价类问题&#xff08;例如&#xff1a;选择哪种方案最好、…

Mysql数据库 16.SQL语言 数据库事务

一、数据库事务 数据库事务介绍——要么全部成功要么全部失败 我们把完成特定的业务的多个数据库DML操作步骤称之为一个事务 事务——就是完成同一个业务的多个DML操作 例&#xff1a; 数据库事务四大特性 原子性&#xff08;A&#xff09;&#xff1a;一个事务中的多个D…

ZYNQ7000---FLASH读写

提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Flash是什么&#xff1f;二、Flash的分类1、内部结构&#xff08;接口&#xff09;区分&#xff1a;2、外部接口区分&#xff1a;SPIQPSI Flash: QSPI 控制…

如何做好性能压测 —— 压测环境设计和搭建!

简介&#xff1a;一般来说&#xff0c;保证执行性能压测的环境和生产环境高度一致是执行一次有效性能压测的首要原则。有时候&#xff0c;即便是压测环境和生产环境有很细微的差别&#xff0c;都有可能导致整个压测活动评测出来的结果不准确。 1. 性能环境要考虑的要素 1.1 系…

SMART PLC星三角延时启动功能块(梯形图FC)

这里我们介绍SMART PLC星三角延时启动功能块,SMART PLC的周期定时器功能块请参考下面文章链接: 周期定时器FB_Cycle_time(SCL+梯形图代码)-CSDN博客文章浏览阅读80次。博途PLC定时器指令使用详细介绍请参考下面文章链接:博途PLC IEC定时器编程应用(SCL语言)_scl定时器-CS…

python环境安装教程

1.python解释器安装 python解释器&#xff1a;将书写的代码转换为二进制。 1.打开官网&#xff1a;Welcome to Python.org&#xff0c;点击下载&#xff0c;选择对应的系统和想要下载的python版本进行下载&#xff1a; 2.双击打开下载好的python解释器进行安装&#xff0c;可…

链表(一)----关于单链表的一切细节这里都有

一.链表 1 链表的概念及结构 概念&#xff1a;链表是一种物理存储结构上非连续、非顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。 现实中的链表结构 数据结构中的链表结构 1.链式结构在逻辑上是连续的&#xff0c;但在物理上不一定是…

开启数据库审计 db,extended级别或os级别)并将审计文件存放到/opt/oracle/audit/下

文章目录 1、登录到数据库2、查看审计状态3、创建审计目录4、启用审计5、设置审计文件路径5、再次查看结果 1、登录到数据库 使用SQL*Plus或者其他Oracle数据库客户端登录到数据库。 sqlplus / as sysdba;2、查看审计状态 show parameter audit;目前是DB状态&#xff0c;并且…

matplotlib 绘制双纵坐标轴图像

效果图&#xff1a; 代码&#xff1a; 由于使用了两组y axis&#xff0c;如果直接使用ax.legend绘制图例&#xff0c;会得到两个图例。而下面的代码将两个图例合并显示。 import matplotlib.pyplot as plt import numpy as npdata np.random.randint(low0,high5,size(3,4)) …

2023年最新十大地推拉新接单平台,都是一手单 官签渠道

2023年做拉新推广的地推人员&#xff0c;一定不要错过这十个接单平台&#xff0c;助你轻松找到一手单&#xff0c;这10个平台分别是 1. 聚量推客&#xff1a; “聚量推客”汇聚了众多市场上有的和没有的地推网推拉新接单项目&#xff0c;目前比较火热&#xff0c;我们做地推和…

【leaflet】学习笔记5 自定义控制层、多图层及其控制 重构

▒ 目录 ▒ &#x1f6eb; 导读开发环境 1️⃣ 重构data.js 数据抽取MyMap 面向对象编程继承MyMap类 2️⃣ d5. 自定义控制层、多图层及其控制示例效果自定义控制层多图层及其控制 &#x1f6ec; 文章小结&#x1f4d6; 参考资料 &#x1f6eb; 导读 开发环境 版本号描述文章…

电子病历编辑器源码(Springboot+原生HTML)

一、系统简介 本系统主要面向医院医生、护士&#xff0c;提供对住院病人的电子病历书写、保存、修改、打印等功能。本系统基于云端SaaS服务方式&#xff0c;通过浏览器方式访问和使用系统功能&#xff0c;提供电子病历在线制作、管理和使用的一体化电子病历解决方案&#xff0c…

CTFhub-RCE-过滤cat

查看当前目录&#xff1a;输入:127.0.0.1|ls 127.0.0.1|cat flag_42211411527984.php 无输出内容 使用单引号绕过 127.0.0.1|cat flag_42211411527984.php|base 64 使用双引号绕过 127.0.0.1|c""at flag_42211411527984.php|base64 使用特殊变量绕过 127.0.0.…