文档章节

Logrotate日志管理工具

问题终结者
 问题终结者
发布于 01/12 21:56
字数 1750
阅读 16
收藏 0
导读 logrotate是一个日志管理程序,用来把旧的日志文件删除(备份),并创建新的日志文件,这个过程称为“转储”。我们可以根据日志的大小,或者根据其使用的天数来转储。

logrotate

logrotate 的执行由crond服务实现。在/etc/cron.daily目录中,有个文件logrotate,它实际上是个shell script,用来启动logrotate。logrotate程序每天由cron在指定的时间(/etc/crontab)启动。因此,使用ps是无法查看到logrotate的。如果它没有起来,就要查看一下crond服务有没有在运行。在执行logrotate时,需要指定其配置文件/etc/logrotate.conf。这 个配置文件的注释写得很清楚,没有必要再罗嗦了。只想强调下面这行,它的作用包含存放在/etc/logrotate.d目录下面的配置文件,不可或缺。 如果你安装了一个新的服务,它的日志转储的规则可以建立一个专门的配置文件,放在/etc/logrotate.d下面。它其实也因为下面的这句话,在 logrotate服务启动时被读取。

每个存放在/etc/logrotate.d目录里的文件,都有上面格式的配置信息。在{}中定义的规则,如果与logrotate.conf中的冲突,以/etc/logrotatate.d/中的文件定义的为准。

Logrotate的运行分为三步,判断系统的日志文件,建立转储计划以及参数,通过cron daemon 运行下面的代码是 Red Hat Linux 缺省的crontab 来每天运行logrotate。logrotate启动脚本放在/etc/cron.daily/logrotate中.

#!/bin/sh
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

可人工执行命令进行测试:

/usr/sbin/logrotate -f /etc/logrotate.conf

看一下主配置文件/etc/logrotate.conf的参数解释:

# see "man logrotate" for details
# rotate log files weekly
weekly                      #每周轮转一次
# keep 4 weeks worth of backlogs
rotate 4                    #保留四个日志文件
# create new (empty) log files after rotating old ones
create                      #rotate后,创建一个新的空文件
# uncomment this if you want your log files compressed
#compress                   #默认是不压缩的
# RPM packages drop log rotation information into this directory
 
include /etc/logrotate.d    #这个目录下面配置文件生效
# no packages own wtmp — we’ll rotate them here
/var/log/wtmp {             #定义/var/log/wtmp这个日志文件;
    monthly                 #每月轮转一次,取代了上面的全局设定的每周轮转一次;
    minsize 1M              #定义日志必须要大于1M大小才会去轮转;
    create 0664 root utmp   #新的日志文件的权限,属主,属主;
    rotate 1                #保留一个,取代了上面的全局设定的保留四个;
}
/var/log/btmp {             #定义/var/log/btmp这个日志文件;
    missingok               #如果日志丢失, 不报错;
    monthly
    create 0600 root utmp
    rotate 1
}

如果在对应的文件下没有设定对应的参数,那么此日志会继承全局配置参数,如:/var/log/btmp文件没有指定monthly,那么机会继承全局参数weekly进行日志轮换了。

logrotate常用参数介绍

daily                     #指定转储周期为每天
weekly                    #指定转储周期为每周;
monthly                   #指定转储周期为每月;
rotate count              #指定日志文件删除之前转储的次数,0指没有备份,5指保留5个备份;
compress                  #通过gzip压缩转储以后的日志;
nocompress                #不需要压缩时,用这个参数;
delaycompress             #延迟压缩,和compress一起使用时,转储的日志文件到下一次转储时才压缩;
nodelaycompress           #覆盖delaycompress选项,转储同时压缩;
copytruncate              #用于还在打开中的日志文件,把当前日志备份并截断;
nocopytruncate            #备份日志文件但是不截断;
create mode owner group   #转储文件,使用指定的文件模式创建新的日志文件;
nocreate                  #不建立新的日志文件;
errors address            #专储时的错误信息发送到指定的Email地址;
ifempty                   #即使是空文件也转储,这个是logrotate的缺省选项;
notifempty                #如果是空文件的话,不转储;
mail address              #把转储的日志文件发送到指定的E-mail地;
nomail                    #转储时不发送日志文件;
olddir directory          #转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统;
noolddir                  #转储后的日志文件和当前日志文件放在同一个目录下;
prerotate/endscript       #在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行;
postrotate/endscript      #在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行;
tabootext [+] list        #让logrotate不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave,v,和~ ;
size size                 #当日志文件到达指定的大小时才转储,Size可以指定bytes(缺省)以及KB(sizek)或者MB(sizem);
postrotate                #日志轮换过后指定指定的脚本,endscript参数表示结束脚本;
sharedscripts             #共享脚本,下面的postrotate中的脚本只执行一次即可;

以上参数都可以已定义在全局配置,或者指定为某个日志文件对的配置,但注意使用时参数之间不要冲突。

一个新系统准备上线前,应该做好以下日志的配置,配置到/etc/logrotate.d/目录下即可。

/var/log/syslog
{
    rotate 7        #保留7份日志文件;
    daily           #每天轮换一次;
    missingok       #如果日志丢失,不报错;
    minsize 10M     #定义日志必须大于10M才会去轮换;
    notifempty      #如果是空文件就不进行转存;
    compress        #压缩日志; 
    delaycompress   #延迟压缩,和compress一起使用时,转储的日志文件到下一次转储时才压缩;
    postrotate      #轮换过后重启rsyslog服务;
        invoke-rc.d rsyslog rotate > /dev/null
    endscript       #结束脚本;
}
 
/var/log/mail.info
/var/log/mail.warn
/var/log/mail.err
/var/log/mail.log
/var/log/daemon.log
/var/log/kern.log
/var/log/auth.log
/var/log/user.log
/var/log/lpr.log
/var/log/cron.log
/var/log/debug
/var/log/messages
 
{
    rotate 4 
    weekly    
    missingok
    notifempty
    compress  
    delaycompress
    sharedscripts    #共享脚本,下面的postrotate脚本只执行一次即可;
    postrotate
        invoke-rc.d rsyslog rotate > /dev/null
    endscript
}

在定义日志文件时也可以使用通配符,但最好少用通配符,因会它会包括已经切换过的日志,要用的话最好在*号后加上扩展名, 如*.log。

一般除了这些系统日志需要配置一下,还有一些应用日志以及组件日志可能也需要配置,如Nginx、php、tomcat、zabbix-agent等。

NGINX日志

/var/log/nginx/*log {
    daily
    rotate 10
    missingok
    notifempty
    compress
    sharedscripts
    su root
    postrotate
        /bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || :
    endscript
}

PHP日志

/var/log/php-fpm/*log {
    missingok
    notifempty
    sharedscripts
    delaycompress
    create 0664 www www
    postrotate
        /bin/kill -SIGUSR1 `cat /var/run/php-fpm/php-fpm.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

原文来自: https://www.linuxprobe.com/logrotate-logs-tools.html

本文转载自:https://www.linuxprobe.com/logrotate-logs-tools.html

共有 人打赏支持
问题终结者
粉丝 18
博文 1020
码字总数 164604
作品 0
运维
私信 提问
tomcat日志清理及logrotate配置

服务器上的tomcat的catalina.out文件越来越大,查看起来很不方便,以前每次都是想起来的时候手工清理一下(cat /dev/null > catalina.out),后来发现了logratate这个工具,Ubuntu下的mysql,n...

韩云飞
2018/06/26
0
0
Linux系统中Logrotate工具用法汇总

Linux系统中Logrotate工具用法汇总 兄弟连IT教育官方与大家分享Linux系统中Logrotate工具用法汇总,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦! Linux系统操作中,Log...

疯狂的小黑
2016/10/19
15
0
Logrotate日志管理工具

logrotate是一个日志管理程序,用来把旧的日志文件删除(备份),并创建新的日志文件,这个过程称为“转储”。我们可以根据日志的大小,或者根据其使用的天数来转储。 logrotate logrotate ...

linuxprobe16
01/12
0
0
linux下logrotate 配置和理解

对于Linux 的系统安全来说,日志文件是极其重要的工具。系统管理员可以使用logrotate 程序用来管理系统中的最新的事件,对于Linux 的系统安全来说,日志文件是极其重要的工具。系统管理员可以...

legend3
2014/07/19
0
0
CentOS Linux使用logrotate分割管理日志

logrotate程序是一个日志文件管理工具。用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到“转储”作用。可以节省磁盘空间。 logrotate命令格式: logrotate [OPTION...] -d, ...

xucaibao1979
2017/09/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

看过上百部片子的这个人教你视频标签算法解析

本文由云+社区发表 随着内容时代的来临,多媒体信息,特别是视频信息的分析和理解需求,如图像分类、图像打标签、视频处理等等,变得越发迫切。目前图像分类已经发展了多年,在一定条件下已经...

腾讯云加社区
24分钟前
0
0
2. 红黑树

定义:红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树(Binary Search Tree)。 要理解红黑树,先要了解什么是二叉查找树。在上一章中,我们学习了什么是二叉树,以及二叉树...

火拳-艾斯
26分钟前
0
0
input的button类型,点击页面跳转

一、input type=button 不做任何操作 例如: <input type="button" class="btn btn-primary" style="width: 30%" value="返回" onclick="window.location.href='/users/list'"></input> onc......

Sunki
32分钟前
0
0
踩坑:js 小数运算出现精度问题

背景 在学习小程序商城源码时发现了这个问题,单价可能出现小数,小数之间运算结果会莫名其妙多出一大串数字,比如下面这样👇。 在此之前我是知道 js 中著名的 0.1 + 0.2 != 0.3 的问题的,...

dkvirus
37分钟前
0
0
zookeeper和HBASE总结

zookeeper快速上手 zookeeper的基本功能和应用场景 zookeeper的整体运行机制 zookeeper的数据存储机制 数据存储形式 zookeeper中对用户的数据采用kv形式存储 只是zk有点特别: key:是以路径...

瑞查德-Jack
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部