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

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

结论:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Tomcat是一个常用的Java Web应用程序服务器,它会记录大量的日志信息,而这些日志文件会不断增大,占用大量的磁盘空间。为了解决这个问题,通常需要进行日志切割和压缩,这就需要使用到logrotate工具logrotate是一个Linux系统下的日志文件管理工具,可以自动切割、压缩和删除日志文件,同时可以保留一定数量的历史日志文件。通过使用logrotate,可以使得Tomcat的日志文件管理更加便捷和高效。 下面是一个简单的logrotate配置文件示例,用于对Tomcat的catalina.out日志文件进行管理: ``` /home/tomcat/logs/catalina.out { daily missingok rotate 7 compress delaycompress notifempty copytruncate } ``` 解释: - `/home/tomcat/logs/catalina.out`:表示要进行管理的日志文件路径。 - `daily`:表示按照每天的时间间隔进行日志切割。 - `missingok`:表示如果日志文件不存在则忽略该文件。 - `rotate 7`:表示保留7个历史日志文件。 - `compress`:表示对切割后的日志文件进行压缩。 - `delaycompress`:表示在下一次切割时再进行压缩,避免出现压缩失败的情况。 - `notifempty`:表示如果日志文件为空则不进行切割。 - `copytruncate`:表示备份旧日志文件时,使用复制方式,同时截断原始日志文件,避免出现日志丢失的情况。 以上配置可以根据实际情况进行调整和修改。配置完成后,可以使用以下命令手动进行日志切割: ``` logrotate -f /etc/logrotate.d/tomcat ``` 其中`-f`表示强制执行,`/etc/logrotate.d/tomcat`为配置文件路径。也可以将该命令添加到定时任务中,以定期对Tomcat日志进行切割

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值