为什么/var/log/messages总是在晚上22:30备份?

举报
媒体服务小助手ultra 发表于 2023/09/13 10:01:45 2023/09/13
【摘要】 我们都知道SuSE系统日志/var/log/messages每天都会备份一个.bz2的压缩文件。但是,笔者发现开发机器上系统日志备份总是发生在晚上22:30。现网这个时候正式业务高峰期,如果在这个时间点压缩备份日志,可能会造成一定的cpu突发,对业务造成影响。如果能把这个时间修改到凌晨3:30或者4:30,则可以一定程度上减少影响

我们都知道SuSE系统日志/var/log/messages每天都会备份一个.bz2的压缩文件。但是,笔者发现开发机器上系统日志备份总是发生在晚上22:30。现网这个时候正式业务高峰期,如果在这个时间点压缩备份日志,可能会造成一定的cpu突发,对业务造成影响。如果能把这个时间修改到凌晨3:30或者4:30,则可以一定程度上减少影响。

linux-5288:~ # ls -shal /var/log/messages*
 15M -rw-r-----+ 1 root root  15M Sep 20 10:19 /var/log/messages
204K -rw-r-----  1 root root 199K Sep 10 22:30 /var/log/messages-20170910.bz2
344K -rw-r-----  1 root root 338K Sep 11 22:30 /var/log/messages-20170911.bz2
716K -rw-r-----  1 root root 709K Sep 12 22:30 /var/log/messages-20170912.bz2
692K -rw-r-----  1 root root 686K Sep 13 22:30 /var/log/messages-20170913.bz2
712K -rw-r-----  1 root root 707K Sep 14 22:31 /var/log/messages-20170914.bz2
460K -rw-r-----  1 root root 453K Sep 15 22:30 /var/log/messages-20170915.bz2
1.2M -rw-r-----  1 root root 1.2M Sep 16 22:31 /var/log/messages-20170916.bz2
1.3M -rw-r-----  1 root root 1.3M Sep 17 22:31 /var/log/messages-20170917.bz2
972K -rw-r-----  1 root root 966K Sep 18 22:31 /var/log/messages-20170918.bz2
1.2M -rw-r-----  1 root root 1.2M Sep 19 22:31 /var/log/messages-20170919.bz2

/var/log/messages是syslog-ng服务写入磁盘的。

linux-5288:~ # lsof | grep /var/log/messages

syslog-ng 20928       root    4w      REG                8,2   16455745     779653 /var/log/messages


syslog-ng是通过logrotate定时任务进行日志备份的。logrotate定时任务脚本放在/etc/cron.daily/logrotate。日志备份策略配置文件放在/etc/logrotate.conf和/etc/logrotate.d/*。


/var/log/messages日志对应的备份策略文件是/etc/logrotate.d/syslog。按照网上的说法,备份策略上写说当日志文件大小超过4MB(+4096k)的时候,就备份一下。

/var/log/warn /var/log/messages /var/log/allmessages /var/log/localmessages /var/log/firewall /var/log/acpid /var/log/NetworkManager {

    compress

    dateext

    maxage 365

    rotate 99

    missingok

    notifempty

    size +4096k

    create 640 root root

    sharedscripts

    postrotate

        /etc/init.d/syslog reload > /dev/null

    endscript

}


咨询了一下suse工程师,得知/etc/cron.daily目录下的logrotate脚本是cron服务每天来调用的,具体策略是在/etc/crontab里面配置的。

linux-rccz:~ # cat /etc/crontab 

SHELL=/bin/sh

PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin

MAILTO=root

#

# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly

#

-*/15 * * * *   root  test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1


每15分钟执行一次/usr/lib/cron/run-crons脚本,检测是否需要执行/etc/cron.daily下的脚本。

这个脚本执行的策略主要是看/var/spool/cron/lastrun/cron.daily文件的时间。

linux-5288:~ # ls -shal /var/spool/cron/lastrun/cron.daily 

0 -rw-r--r-- 1 root root 0 Sep 19 22:30 /var/spool/cron/lastrun/cron.daily

脚本每天执行/etc/cron.daily目录下脚本之前,就会生成这个文件。下次执行的时间,就是根据这个文件的修改时间后的一天。因为/usr/lib/cron/run-crons脚本是15分钟检查一次,所以/var/spool/cron/lastrun/cron.daily的修改时间只可能是00分、15分、30分、45分。


除了这个文件,还可以修改/etc/sysconfig/cron来规定cron.daily执行的时间。

linux-rccz:~ # cat /etc/sysconfig/cron | grep DAILY_TIME -B8 -A5

## Type:         string

## Default:      ""

#

# At which time cron.daily should start. Default is 15 minutes after booting

# the system. Example setting would be "14:00".

# Due to the fact that cron script runs only every 15 minutes,

# it will only run on xx:00, xx:15, xx:30, xx:45, not at the accurate time

# you set.

DAILY_TIME=""


## Type:         integer

## Default:      5

#

# Maximum days not running when using a fixed time set in DAILY_TIME.

# 0 to skip this. This is for users who will power off their system.

#

# There is a fixed max. of 14 days set,  if you want to override this

# change MAX_NOT_RUN_FORCE in /usr/lib/cron/run-crons


MAX_NOT_RUN="5"


一句话总结:执行如下命令修改cron.daily执行时间,进而可以修改/var/log/messages的备份时间。

sed -i 's/^DAILY_TIME=".*"/DAILY_TIME="03:30"/g' /etc/sysconfig/cron

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。