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-20190516dateformat -%Y%m%d%s                            #日志时间格式dateyesterday                                   #如果定时任务时间设置的是0点就要配置此项,不然切割的内容是昨天的但是日志名却是当天的.notifempty                                      #当日志文件为空时,不进行轮转create 644 root root                            #轮转时指定创建新文件的属性sharedscripts                                   #运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本postrotateif [ -f /usr/local/nginx/nginx.pid ]; thenkill -USR1 `cat /usr/local/nginx/nginx.pid`fiendscript
}
定时任务:
#每天中午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

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

结论:

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue-pdf在vue框架中的使用

在components目录下新建PdfViewer/index.vue vue-pdf版本为4.3.0 <template><div :id"containerId" v-if"hasProps" class"container"><div class"right-btn"><div class"pageNum"><input v-m…

学习指南:如何快速上手媒体生态一致体验开发

过去开发者们在使用多媒体能力时&#xff0c;往往会遇到这样的问题&#xff0c;比如&#xff1a;为什么我开发的相机不如系统相机的效果好&#xff1f;为什么我的应用和其他的音乐一起发声了&#xff0c;我要怎么处理&#xff1f;以及我应该怎么做才能在系统的播控中心里可以看…

ExoPlayer架构详解与源码分析(9)——TsExtractor

系列文章目录 ExoPlayer架构详解与源码分析&#xff08;1&#xff09;——前言 ExoPlayer架构详解与源码分析&#xff08;2&#xff09;——Player ExoPlayer架构详解与源码分析&#xff08;3&#xff09;——Timeline ExoPlayer架构详解与源码分析&#xff08;4&#xff09;—…

Rockdb简介

背景 最近在使用flink的过程中&#xff0c;由于要存储的状态很大&#xff0c;所以使用到了rockdb作为flink的后端存储&#xff0c;本文就来简单看下rockdb的架构设计 Rockdb设计 Rockdb采用了LSM的结构&#xff0c;它和hbase很像&#xff0c;不过严格的说&#xff0c;基于LS…

VBA_MF系列技术资料1-222

MF系列VBA技术资料 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧&#xff0c;我参考大量的资料&#xff0c;并结合自己的经验总结了这份MF系列VBA技术综合资料&#xff0c;而且开放源码&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-04属于定…

如何使用软路由R4S+iStoreOS实现远程访问内网电脑桌面

软路由R4SiStoreOS实现公网远程桌面局域网内电脑 文章目录 软路由R4SiStoreOS实现公网远程桌面局域网内电脑简介一、配置远程桌面公网地址二、家中使用永久固定地址 访问公司电脑**具体操作方法是&#xff1a;** 简介 上篇教程我们介绍了如何在iStoreOS中安装Cpolar&#xff0…

腾讯云便宜服务器有哪些?腾讯云这个服务器一个月7块钱!

大家好&#xff0c;今天我们来一起探讨一下腾讯云便宜服务器的相关问题。相信很多人在寻找可靠的云服务器时都会关注价格&#xff0c;而腾讯云作为国内领先的云计算平台&#xff0c;其价格优惠的服务器产品也是备受关注。那么&#xff0c;腾讯云便宜服务器有哪些呢&#xff1f;…

23111701[含文档+PPT+源码等]计算机毕业设计javaweb点餐系统全套餐饮就餐订餐餐厅

文章目录 **项目功能简介:****点餐系统分为前台和后台****前台功能介绍&#xff1a;****后台功能介绍&#xff1a;** **论文截图&#xff1a;****实现&#xff1a;****代码片段&#xff1a;** 编程技术交流、源码分享、模板分享、网课教程 &#x1f427;裙&#xff1a;77687156…

rabbitMQ的死信队列的处理模型示例

示例场景&#xff1a; 消费者发送消息给normal_exchange交换机&#xff0c;队列normal-queue通过routingKeyz:zhangsan绑定normal_exchange&#xff0c;消费者C1消费。 使队列normal_queue达到死信条件时候&#xff0c;normal-queue队列把消息发送给dead-exchange交换机&#x…

echarts 实现同一组legend控制两个饼图示例

实现同一组legend控制两个饼图示例&#xff1a; 该示例有如下几个特点&#xff1a; ①饼图不同值实现分割 ②实现tooltip自定义样式&#xff08;echarts 实现tooltip提示框样式自定义-CSDN博客&#xff09; ③自定义label内容 ④不同值颜色渐变 代码如下&#xff1a; this.o…

Python基础:输入输出详解-输出字符串格式化

Python中的输入和输出是编程中非常重要的方面。 1. 输入输出简单介绍 1.1 输入方式 Python中的输入可以通过input()函数从键盘键入&#xff0c;也可以通过命令行参数或读取文件的方式获得数据来源。 1&#xff09;input()示例 基本的input()函数&#xff0c;会将用户在终端&…

爬取全国高校数据 (高校名称,高校所在地,高校类型,高校性质,高校特色,高校隶属,学校网站)

爬取全国高校数据 网站&#xff1a; 运行下面代码得到网站. import base64 # 解码 website base64.b64decode(IGh0dHA6Ly9jb2xsZWdlLmdhb2thby5jb20vc2NobGlzdC8.encode(utf-8)) print(website)分析&#xff1a; 我们需要爬取的字段&#xff0c;高校名称&#xff0c;高校所…