日志切割工具logrotate解决Tomcat catalina.out日志过大的问题
一、介绍日志切割logrotate
对于Linux系统安全来说,日志文件是极其重要的工具。不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了Logrotate,争相发明自己的轮子,这真是让人沮丧啊!就好比明明身边躺着现成的性感美女,大家却忙着自娱自乐,罪过!
logrotate程序是一个日志文件管理工具。用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到"转储"作用。可以节省磁盘空间。例如,你可以设置logrotate,让/var/log/logfile日志文件每30天轮循,并删除超过6个月的日志。配置完后,logrotate的运作完全自动化,不必进行任何进一步的人为干预。
二、logrotate配置使用
1、安装logrotate
(1)系统版本,我使用的如下
[root@along ~]# cat /etc/redhat-release
CentOS Linux release 7.3. (Core)
[root@along ~]# uname -r
3.10.-514.26..el7.x86_6
(2)默认centos系统安装自带logrotate,直接使用yum 安装
[root@along ~]# yum -y install logrotate
(3)软件包说明
[root@along ~]# rpm -ql logrotate
/etc/cron.daily/logrotate
/etc/logrotate.conf #logrotate 自身的配置文件
/etc/logrotate.d #配置切割设置的目录
注:logrotate的配置文件是/etc/logrotate.conf,通常不需要对它进行修改。
日志文件的轮循设置在独立的配置文件中,它(们)放在/etc/logrotate.d/目录下。
2、配置使用logrotate
(1)准备测试日志
创建测试日志/log-file,然后在其中填入一个10MB的随机比特流数据文件
[root@along ~]# touch /var/log/log-file
[root@along ~]# head -c 10M < /dev/urandom > /var/log/log-file
(2)配置切割设置
[root@along ~]# vim /etc/logrotate.d/log-file
[root@along ~]# vim /etc/logrotate.d/log-file
/var/log/test/log-file {
daily
rotate
compress
delaycompress
missingok
notifempty
dateext
sharedscripts
create root root
postrotate
/usr/bin/killall -HUP rsyslogd
endscript
}
(3)配置文件参数说明
配置参数 |
说明 |
monthly |
日志文件将按月轮循。其它可用值为'daily','weekly'或者'yearly'。 |
rotate 5 |
一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。 |
compress |
在轮循任务完成后,已轮循的归档将使用gzip进行压缩。 |
delaycompress |
总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。 |
missingok |
在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。 |
notifempty |
如果日志文件为空,轮循不会进行。 |
dateext |
切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期,没有这个配置项会附加一个小数点加一个数字序号 |
sharedscripts |
在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。 |
create 644 root root |
以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。 |
postrotate/endscript |
在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。 |
以上信息来源 "man logrotate" |
(4)运行logrotate
logrotate可以在任何时候从命令行手动调用
① 要调用为/etc/lograte.d/下配置的所有日志切割配置
[root@along ~]# logrotate /etc/logrotate.conf
② 要为某个特定的配置调用logrotate,执行一次切割任务测试
[root@along ~]# ll /var/log/log-file*
-rw-r--r-- root root Jun : /var/log/test/log-file
[root@along ~]# logrotate -vf /etc/logrotate.d/log-file
[root@along ~]# ll /var/log/log-file*
-rw-r--r-- root root Jun : /var/log/test/log-file
-rw-r--r-- root root Jun : /var/log/test/log-file-
③ 选项注释
-f:选项来强制logrotate轮循日志文件
-v:参数提供了详细的输出
(5)设置logrotate定时任务
[root@along ~]# crontab -e
#auth root
#date --
* * * /usr/sbin/logrotate -vf /etc/logrotate.d/log-file &>/dev/null
三、使用logrotate处理tomcat catalina.out日志过大问题
问题描述:一般在部署Tomcat后,运行久了,catalina.out文件会越来越大,对系统的稳定造成了一定的影响。
1、定义tomcat的pid 文件
(1)修改catalina.sh 文件,定义Tomcat的pid文件的路径
[root@along ~]# vim /data/tomca/bin/catalina.sh
# Get standard environment variables
PRGDIR=`dirname "$PRG"`
CATALINA_PID=/var/run/tomcat.pid
(2)重启Tomcat,且查询pid
[root@along ~]# systemctl restart tomcat.service
[root@along ~]# cat /var/run/tomcat.pid
21924
2、配置切割设置
(1)配置切割
[root@along ~]# vim /etc/logrotate.d/tomcat_catalina
/data/tomcat/logs/catalina.out {
daily
rotate
missingok
notifempty
dateext
compress
delaycompress
sharedscripts
create root root
postrotate
if [ -f /var/run/tomcat.pid ]; then
kill -USR1 `cat /var/run/tomcat.pid`
fi
endscript
}
(2)USR1信号解释
USR1亦通常被用来告知应用程序重载配置文件;例如,向Apache HTTP服务器发送一个USR1信号将导致以下步骤的发生:停止接受新的连接,等待当前连接停止,重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改。
在没有执行kill -USR1 `cat ${pid_path}`之前,即便已经对文件执行了mv命令而改变了文件名称,tomcat还是会向新命名的文件" xxx.out_ 20180619"照常写入日志数据的。原因在于:linux系统中,内核是根据文件描述符来找文件的。
3、测试执行
[root@along ~]# logrotate -vf /etc/logrotate.d/tomcat_catalina
4、设置logrotate定时任务
[root@along ~]# crontab -e
#auth root
#date --
* * * /usr/sbin/logrotate -vf /etc/logrotate.d/tomcat_catalina &>/dev/null
日志切割工具logrotate解决Tomcat catalina.out日志过大的问题的更多相关文章
- linux运维、架构之路-tomcat日志切割工具 logrotate
一.Logrotate简介 1.Logrotate实际就是对日志进行切割的小工具,他通过让用户来配置规则的方式,检测和处理日志文件.配合Cron可让处理定时化:2.Logrotate预制了大量判断条件 ...
- Nginx日志切割工具——logrotate 使用记录
1.安装 logrotate是Linux系统自带,无需安装 2.配置 进入[/etc/logrotate.d/nginx]文件修改配置 # 需要备份的日志路劲,一个或多个都可以 /data/logs/ ...
- tomcat catalina.out日志切割(logrotate)
简单说明: 1,因为tomcat日志会一直往catalina.out里面输出,所以回到值catalina.out非常大,占用磁盘空间 2,日志非常大,查看日志就需要很长时间. 3,据说catalina ...
- Linux日志切割方法[Logrotate、python、shell实现方式]
Linux日志切割方法[Logrotate.python.shell实现方式] 对于Linux系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务器上都运行着一些诸如每天切分 ...
- 使用Linux自带日志滚动工具logrotate滚动redis日志示例
截至到redis-5.0版本,redis仍然不会自动滚动日志文件,如果不处理则日志文件日积月累越来越大,最终将导致磁盘满告警: # ls -lh total 12G -rw-r--r-- 1 redi ...
- Nginx日志切割之Logrotate篇
不管是什么日志文件,都是会越来越大的,大到一定程度就是个可怕的事情了,所以要及早的做处理,方法之一就是按时间段来存储,不过linux系统提供了Logrotate的日志管理工具,很好用,不用写计划任务脚 ...
- Tomcat catalina.out日志使用log4j按天分割
由于tomcat catalina.out日志不会自动分割, 一.日志分割所需包在附近中 1. 压缩包中有三个jar包: log4j-1.2.16.jar tomcat-juli-adapters.j ...
- Linux 日志切割工具cronolog详解
一.前言 二.cronolog 简介 三.cronolog 特点 四.cronolog 安装 五.cronolog 使用 六.cronolog 总结 注,操作系统 CentOS 6.4 x86_64, ...
- linux系统日志自动切割工具----logrotate
参考资料 :https://www.cnblogs.com/kevingrace/p/6307298.html 对于Linux系统安全来说,日志文件是极其重要的工具.不知为何,我发现很多运维同学的服务 ...
随机推荐
- JDBC学习(含转载)
首先连接数据库: Class.forName("com.mysql.jdbc.Driver");//加载jdbc驱动 Connection conn=DriverManager.g ...
- Codeforces 863 简要题解
文章目录 A题 B题 C题 D题 E题 F题 G题 传送门 简要题解?因为最后一题太毒不想写了所以其实是部分题解... A题 传送门 题意简述:给你一个数,问你能不能通过加前导000使其成为一个回文数 ...
- Effective Java -- 使可变性最小化
为了使类成为不可变的,应该遵循以下五条原则: 1. 不要提供任何会下盖对象状态的方法 2. 保证类不会被扩展 3. 使所有的域都是final的 4. 使所有的域都成为私有的 5. 确保对于任何可变组件 ...
- JAVA 8 主要新特性 ----------------(五)Lambda方法引用与构造器引用
一.Lambda方法引用 当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用!(实现抽象方法的参数列表,必须与方法引用方法的参数列表保持一致!) 方法引用: 使用操作符 “::” 将 ...
- [转]找到MySQL发生swap的原因
背景: 最近遇到了一个郁闷的问题:明明OS还有大量的空闲内存,可是却发生了SWAP,百思不得其解.先看下SWAP是干嘛的,了解下它的背景知识.在Linux下,SWAP的作用类似Windows系统下的“ ...
- DOM对象和jQuery对象的转换
<script type="text/javascript"> //js的页面加载事件 window.onload = function () { //获取DOM对象 ...
- Forward团队-爬虫豆瓣top250项目-项目总结
托管平台地址:https://github.com/xyhcq/top250 小组名称:Forward团队 组长:马壮 成员:李志宇.刘子轩.年光宇.邢云淇.张良 我们这次团队项目内容是爬取豆瓣电影T ...
- IOS 模拟器多开集成测试和那些坑
#### 前言公司一直没有IOS自动化,搞得很尴尬,个人感觉搞自动测试的,不搞IOS自动化,就像金X,少了重要一点啊.也向领导申请过不止一次,总只都各种原因没有分配机器,不了了之.某天线上IOS出bu ...
- this用法总结
在JavaScript中,this关键字可以说是最复杂的机制之一.对this的作用机制缺乏比较深入的理解很容易在实际开发中出现问题. 1.this的作用 为什么要在JavaScript中使用this呢 ...
- Linux 区别 chown和chmod的用法
chown用法用来更改某个目录或文件的用户名和用户组的chown 用户名:组名 文件路径(可以是就对路径也可以是相对路径)例1:chown root:root /tmp/tmp1就是把tmp下的tmp ...