logrotate测试_Linux自带神器logrotate详解

周一上班,就被开发组那哥们儿拉进电话会议,说他们的服务又挂了,估计磁盘又爆掉了。登录到web服务上,上来 df -h 一把,果然,挂的一个共享又被撑爆。

root@websrv001 ~ # df -h

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/rootvg-rootvol

12G  5.6G  5.6G  50% /

tmpfs                  14G     0   14G   0% /dev/shm

/dev/sda1             477M   84M  368M  19% /boot

/dev/mapper/rootvg-homevol

2.0G  4.0M  1.9G   1% /local/home

/dev/mapper/rootvg-tmpvol

1.1G  252M  793M  25% /tmp

/dev/mapper/rootvg-varvol

5.8G  1.1G  4.5G  20% /var

/dev/mapper/fsvol

298G  298G     0 100% /net/fsvol

tmpfs                  14G     0   14G   0% /var/tmp

上次是因为liferay的log太大,这次再看看liferay的log

root@websrv001 ~ # ll -h /data/tomcat/storage/BU001/liferay/logs/

total 199M

drwxr-xr-x 2 tomcat tomcat 4.0K Apr 20 13:14 .

drwxr-xr-x 5 tomcat tomcat 4.0K Mar 14  2016 ..

-rw-r--r-- 1 tomcat tomcat 1.5M Apr 13 23:59 liferay.2020-04-13.log.gzipped_on_2020-04-17.gz

-rw-r--r-- 1 tomcat tomcat 2.5M Apr 14 23:59 liferay.2020-04-14.log.gzipped_on_2020-04-18.gz

-rw-r--r-- 1 tomcat tomcat 7.8M Apr 15 23:59 liferay.2020-04-15.log.gzipped_on_2020-04-19.gz

-rw-r--r-- 1 tomcat tomcat  31M Apr 17 23:58 liferay.2020-04-17.log

-rw-r--r-- 1 tomcat tomcat 7.0M Apr 18 23:59 liferay.2020-04-18.log

-rw-r--r-- 1 tomcat tomcat  90G Apr 20 17:54 liferay.2020-04-20.log

我列个去,尼玛,一个liferay log文件,能增长到90G,这也太扯了 吧。果断删掉,不知道为什么,每当我要敲rm -rf的时候,心里就莫名的紧张。。。

root@websrv001 ~ # rm -rf /data/tomcat/storage/BU001/liferay/logs/liferay.2020-04-20.log

重启一下服务

root@websrv001 ~ # service tomcat restart

随后通知了一下开发组那哥们儿,服务器磁盘已经清理,服务已经重启,那边也确认了web服务又活了,可以用了。随后,又检查了一下其它文件夹,结果发现catalina.out这个日志文件,又是超级无敌大:89G,我也是醉了。

root@websrv001 ~ # ll -h /data/tomcat/server/BU001/logs/

total 104G

drwxrwxr-x  2 root   tomcat  12K Apr 20 04:45 .

drwxr-xr-x 13 root   root   4.0K Apr 16 17:26 ..

-rw-r--r--  1 tomcat tomcat 5.1K Apr 13 10:28 catalina.2020-04-13.log.gz

-rw-r--r--  1 tomcat tomcat  13K Apr 14 20:46 catalina.2020-04-14.log.gz

-rw-r--r--  1 tomcat tomcat 7.1K Apr 16 17:51 catalina.2020-04-16.log.gz

-rw-r--r--  1 tomcat tomcat  89G Apr 20 10:39 catalina.out

-rw-r--r--  1 tomcat tomcat    0 Feb 10 23:57 catalina.out-20200210

-rw-r--r--  1 tomcat tomcat 352M Apr 13 03:38 catalina.out-20200413

问题虽然解决了,但是这个问题本来就不应该发生啊!难道之前做运维的同事都没有做脚本来监控和限制日志大小嘛?这可是生产系统啊!这样可不行,既然没人搞,我就来搞搞。于是网上搜了一把,原来Linux系统就自带了一个日志切割神器——>logrotate

man了一下logrotate,看到了以下描述:logrotate is designed to ease administration of systems that generate large numbers of log files. It allows automatic rotation, compression, removal, and mailing of log files. Each log file may be handled daily, weekly, monthly, or when it grows too large.

Normally, logrotate is run as a daily cron job. It will not modify a log more than once in one day unless the criterion for that log is based on the log's size and logrotate is being run more than once each day, or unless the -f or --force option is used.

原来这个神器是为了方便管理系统大量日志文件而设计的,对日志文件可实现自动rotation(字面意思是旋转,觉得理解成日志循环更好一些),压缩,删除和通过email发送log文件。颗粒度控制很好,可以针对每一个log文件进行每天,每周,每个月或者当log文件过大时进行rotate。

一般情况下呢,logrotate是基于每天的cron job来执行的,所以对某个log文件的rotae每天执行一次,除非rotate的执行标准是基于log文件大小,并且你logrotate这个命令每天被执行了多次,也就是你自定义了定时任务,让logrotate每x分钟或者每x小时执行一次,再或者你手动执行这个命令添加了-f/--force这个选项。

另外,我发现这个神器是系统自带的,可想而知这个工具是多么的重要,否则Linux也不会默认就安装了这个工具。

那接下来,我们来看看logrotate的相关配置以及如何执行logrotate。

logrotate的conf文件在 /etc/下:

[root@labhost ~]# ll /etc/logrotate.

logrotate.conf  logrotate.d/

[root@labhost ~]# cat /etc/logrotate.conf

那我们来看看logrotate.conf文件里面的内容:

[root@labhost ~]# cat /etc/logrotate.conf

# see "man logrotate" for details

# rotate log files weekly:每周rotate log文件一次

weekly

# keep 4 weeks worth of backlogs:保存最近4周的log日志,因为上面是每周rotate一次

rotate 4

# create new (empty) log files after rotating old ones:rotate老日志文件之后,创建一个新的空日志文件

create

# use date as a suffix of the rotated file:rotate的文件以日期格式为后缀,比如:access_log-20200422,如果不加这个选项,rotate的格式为:access_log.1,access_log.2等等。

dateext

# uncomment this if you want your log files compressed:如果想压缩rotate后的文件,把下面compress前面的#号去掉就可以了。

#compress

# RPM packages drop log rotation information into this directory:RPM包的日志rotation配置信息,建议放到/etc/logrotate.d这个文件夹下,实现自定义控制log文件rotate

include /etc/logrotate.d

# no packages own wtmp and btmp -- we'll rotate them here:wtmp和btmp这两个不属于任何package,我们就把rotate的规则写到这里

/var/log/wtmp {

monthly #每个月执行一次rotate

create 0664 root utmp  #创建空文件,权限是664, 所属用户名 所属用户组

minsize 1M   #日志文件大小超过1M才执行rotate,否则跳过

rotate 1         #rotate时,只保留一份rotate文件

}

/var/log/btmp {

missingok

monthly

create 0600 root utmp

rotate 1

}

# system-specific logs may be also be configured here.#其它系统日志也可以在这里配置rotate规则

关于rotate规则的配置,从上面的logrotate.conf文件里可以看到,有两个地方可以配置:

一种是直接在logrotate.conf里配置,不过一般适用于非RPM包的系统日志文件。

另外一种是如果你要做rotate的日志文件是由第三方RPM包软件产生的,需要在/etc/logrotate.d这个文件夹下新建一个配置文件,配置相关rotate规则。(UnleBen发现,其实如果你安装了第三方的软件包之后,在/etc/logrotate.d这个文件夹下就会自动创建了对应软件的rotate配置文件。)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值