运维工作笔记

一、logrotate日志切割

1、概要说明

logrotate工具是为了方便进行日志管理而产生的一个工具,主要可以完成的工作包含:基于天、周、月、文件大小进行日志的滚动备份、压缩、删除甚至是发送邮件。

2、调用运行方式

  • 每天晚上,cron daemon会自动执行/etc/cron.daily目录下的任务。它会触发/etc/cron.daily/logrotate文件,logrotate一般是随linux安装的。
  • logrotate文件中定义了待执行命令:/usr/sbin/logrotate /etc/logrotate.conf
  • /etc/logrotate.conf 包含了/etc/logrotate.d目录下的所有脚本(所以自定义脚本日志滚动脚本需要放置在此目录)。

3、logrotate命令语法

格式:logrotate [-dv][-f] [-s] config_file+

-v 显示详细信息

-d 开启调试模式,输出执行过程,但是不会对日志和logrotate的state文件产生操作后果

-f 忽略调用周期,强制执行logrotate

-m 指定logrotate发送邮件的命令

-s 多个logrotate运行时,告知logrotate自己使用的state文件(/var/log/logrotate.status)

4、logrotate配置文件参数说明

daily 表示每天整理一次,其它可用值为‘weekly’、‘monthly’、‘yearly’

rotate 30 表示保留30份的备份文件

dateext 表示让旧日志文件以日期命名

compress\nocompress 表示使用压缩转储或不使用压缩转储,默认不适用

delaycompress 与compress一起使用,延时压缩,转储日志文件到下一次转储是才压缩

copytruncate 表示先复制log文件内容,然后在清空,用于无重新打开日志文件命令的情况。以Nginx为例,/usr/local/nginx/sbin/nginx -s reopen。但是其他的应用程序不一定遵循这样的约定,比如说MySQL是通过flush-logs来重新打开日志文件的。更有甚者,有些应用程序就压根没有提供类似的方法,此时如果想重新打开日志文件,就必须重启服务,但为了高可用性,这往往不能接受。还好Logrotate提供了一个名为copytruncate的指令,此方法采用的是先拷贝再清空的方式,整个过程中日志文件的操作句柄没有发生改变,所以不需要通知应用程序重新打开日志文件,但是需要注意的是,在拷贝和清空之间有一个时间差,所以可能会丢失部分日志数据。

size 5M 日志文件大小增长到5MB再进行轮循。

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

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

postrotate\endscript 在转储以后执行命令,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。

猜你喜欢

转载自www.cnblogs.com/he-ding/p/10270268.html