logrotate+crond日志切割、轮询

logrotate

在工作中经常会有需求去查看日志,无论是通过应用或者系统error日志去查找问题或者通过nginx的访问日志统计站点日均PV、UV。所以体现了日志的重要性,但是通常当业务越来越大的时候各项目产生的日志将会是个很大的数字,优势我们会需要查找往期的日志,这时候就需要对日志进行合理的备份保留。随着时间的 累计,一个日志文件将会变得很大,我们通过命令去查找需要的日志段的时候就会显得非常困难,所以我们需要读各类日志进行切割轮询处理。

logrotate是系统自带的日志切割工具,它配合crond和shell脚本可以实现对日志的切割轮询。以下将介绍如何使用logrotate。

1、查看本机logrotate

[[email protected] data]# which logrotate
/usr/sbin/logrotate

2、在任意目录下创建logrotate执行文件

[[email protected] data]# mkdir logrotate[[email protected] logrotate]# vim tomcat_log1.conf

/workspace/service_platform/apache-tomcat-7.0.69-jd1/logs/catalina.out{ #产生日志的路径
       copytruncate
       daily
       dateext
       missingok

}

3、logrotate参数详解

daily: 指定转储周期为每天
weekly: 指定转储周期为每周

monthly: 日志文件将按月轮循。其它可用值为‘daily’,‘weekly’或者‘yearly’

rotate 5: 一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除

compress: 在轮循任务完成后,已轮循的归档将使用gzip进行压缩

missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误

notifempty: 如果日志文件为空,轮循不会进行

create 644 root root:以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件

dateext: 切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期

compress: 通过gzip 压缩转储旧的日志

delaycompress: 当前转储的日志文件到下一次转储时才压缩

notifempty: 如果日志文件为空,不执行切割

sharedscripts: 只为整个日志组运行一次的脚本

postrotate/endscript: 在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

size:  size当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem)

3、通过crond定时执行

[[email protected] logrotate]# crontab -l
##tomcat log##
59 23 * * * /usr/sbin/logrotate -f /data/logrotate/tomcat_log1.conf

4、通过脚本备份按期清理

[[email protected] scripts]# cat log1_polling.sh
#!/bin/sh

logs_path="/workspace/service_platform/apache-tomcat-7.0.69-jd1/logs"
c_log=catalina.out
a_log=localhost_access_log
find $logs_path -name "catalina.*-*-*.log" -exec rm -rf {} \;
for i in $(seq 1 );
do
        dates=`date +"%Y%m%d" -d "-${i}day"`
        dates2=`date +"%Y-%m-%d" -d "-${i}day"`
        cd $logs_path
        tar zcf $a_log.$dates.tar.gz  $a_log.$dates2.txt
        tar zcf $c_log.$dates.tar.gz  $c_log-$dates
          sleep 30
          wait
          find $logs_path -mtime +7 -name "localhost_access_log.*.txt" -exec rm -rf {} \;
          find $logs_path -mtime +7 -name "catalina.out-*.log" -exec rm -rf {} \;

done

find $logs_path -mtime +7 -name "localhost_access_log.*.tar.gz" -exec rm -rf {} \;
find $logs_path -mtime +30 -name "catalina.*.tar.gz" -exec rm -rf {} \;

5、加入定时任务

[[email protected] scripts]# crontab -l
00 00 * * * /bin/sh /data/scripts/log1_polling.sh

原文地址:https://www.cnblogs.com/FireLL/p/11612891.html

时间: 2024-08-26 11:59:51

logrotate+crond日志切割、轮询的相关文章

linux 日志定时轮询流程详解(logrotate)

logrotate介绍 对于Linux系统安全来说,日志文件是极其重要的工具.日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.当日志文件不断增长的时候,就需要定时切割,否则,写日志的速度和性能也会下降,更不便于我们归档,查询. 所以便有了使用logrotate的时候 ,logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循).压缩以及删除旧的日志文件.例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除

Linux自带 Logrotate 日志切割工具配置详解

Logrotate 程序是一个日志文件管理工具.用于分割日志文件,压缩转存.删除旧的日志文件,并创建新的日志文件,下面就对logrotate日志轮转的记录: 1.1 Logrotate配置文件介绍 Linux系统默认安装logrotate,默认的配置文件: /etc/logrotate.conf /etc/logrotate.d/ logrotate.conf:为主配置文件logrotate.d:为配置相关子系统,用于隔离每个应用配置(Nginx.PHP.Tomcat...)  Logrotat

logrotate关于日志轮询和分割

如果你的是源码包安装的服务,那么对于Linux服务器上的一些服务在运行当中产生的日志很重要,可以判断你的服务是否有异常等,但源码包安装的日志是没有日志的轮询或者说是切割能力的, 所以你就需要用到bash脚本来做或者用其他语言,但我这里来介绍下一个RHEL系列的工具 logrotate 他可以轻松的帮你实现日志的轮询.像RHEL和CentOS都默认安装了该服务.你可以直接 编辑/etc/logrotate.conf  来实现对相应日志文件的轮询: 例如典型的apache日志, 首选我来说下列子然后

【09】Nginx:静态压缩 / 日志切割 / 防盗链 /恶意解析/ 跨域

写在前面的话 上一节我们谈了关于 nginx 服务器的一些简单的安全优化问题,能够帮助我们解决一部分线上服务存在的安全隐患.但是想要提升用户体验这是原因不够的,我们还需要从服务的优化方面入手. 本节更多的还是偏理论的东西,会给出相应的配置.可能有些就无法立即做测试. 访问优化:静态压缩 我们知道一个网站总会有一些 CSS/JS 等静态文件需要加载,如果用户每次请求都需要去服务器下载一遍,比如 Jquery 这种根本不会变的.明显会造成带宽的浪费.同时由于用户可能本身网速还不好,就容易给用户带来不

Syslog-ng+Rsyslog收集日志:logrotate日志切割、轮询(七)

很多软件都自带切割日志,比如tomcat可以按时间来命名.rsyslog可按日期生成文件,但是并不支持用"%$year%-%$month%-%$day%"这些变量来读取文件(目前版本号:rsyslog-8.17.0-1.el6.x86_64). 那么,就要用到日志轮询logrotate. 概要,配置. 全局配置:/etc/logrotate.conf 局部配置:/etc/logrotate.d/ 为了便于管理,自定义的配置都放到/etc/logrotate.d/里 使用. 创建文件to

logrotate日志切割、轮询、删除

1.创建轮询日志文件,加入如下内容,log-file是我自已指定的文件日志名字 [[email protected] mnt]# cat /etc/logrotate.d/log-file /mnt/log-file { size=100M rotate 5 compress dateext dateformat %Y-%m-%d-%s delaycompress notifempty missingok create 644 root root postrotate /usr/bin/kill

Nginx的继续深入(日志轮询切割,重写,负载均衡等)

Nginx的访问日志轮询切割 通常什么情况Nginx会把所有的访问日志生成到一个制定的访问日志文件access.log里面,但时间一长,日志个头很大不利于日志的分析和处理. 有必要对Nginx日志进行按天或按小时进行切割,分成不同的文件保存. [[email protected] logs]#cat /server/script/cut_nginx_log.sh#!/bin/shDataformat = `date +%Y%m%d`Basedir = "/usr/local/nginx"

Linux的日志文件管理工具——logrotate(linux日志切割与轮循)

日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到.对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题.除此之外,处理一个单个的庞大日志文件也常常是件十分棘手的事. Linux日志切割 现代的Linux版本都有一个小程序,名为logrotate,用来帮助用户管理日志文件,它以自己的守护进程工作.logrotate周期性地旋转日志文件,可以周期性地把每个日志文件重命名成一个备份名字,然后让它的守护进程开始使用一个日志文件的新的拷贝.

Nginx日志轮询切割

Nginx日志轮询切割 默认情况下,Nginx会把所有的访问日志生成到一个指定的访问日志文件access*.log里,但这样一来,时间长了就会导致日志单个文件很大,不利于日志的分析和处理,因此有必要对Nginx日志按天或者按小时等进行分割,具体要看具体线上业务,使其分成不同的文件保存.这里我们按天进行切割日志. 1.配置日志切割脚本,具体如下: [[email protected] ~]# mkdir -p /server/scripts/ [[email protected] ~]# cd /