Cheug's Blog

当前位置:网站首页 / Server / 正文

使用logrotate进行日志切割

2024-08-21 / Server / 205 次围观 / 0 次吐槽 /

配置文件全局参数说明:

vi /etc/logrotate.conf


weekly        #每周执行一次日志切割

rotate 4      #表示日志切割后历史文件最多保留最近的多少份(4 表示保留最近的4份)

create        #指定新创建的文件权限与所属主与所属组

dateext       #使用日期为后缀的回滚文件

#compress     #压缩日志文件

include /etc/logrotate.d  #单独子项目日志切割配置规则的目录

# 全局日志切割规则
/var/log/wtmp {
    monthly                  #每月切割一次
    create 0664 root utmp    #设置wtmp这个日志文件的权限,属主,属组
    minsize 1M               #文件大小的最小值超过1M进行切割(主要看这个大小来切割,不一定按每月时间来切割)
    rotate 1                 #日志切割后历史文件最多保留多少份(不含当前使用的日志)
}

/var/log/btmp {
    missingok                #如果文件丢失,将不会报错
    monthly
    create 0600 root utmp
    rotate 1
}

其他参数说明:

monthly            #日志文件按照月切割吗,其他值可用 daily ,weekly ,yearly

delaycompress      #与compress 一起使用,指示不要将最近的归档压缩,压缩将在下一次周期进行(一般在于软件读取最新的归档时有用)

size               #指定大小才会切割日志

notifempty         #如果日志文件为空,切割不会进行

postrotate/endscript #在其他所有的指令完成后,指定的命令将会被执行。这种情况下rsyslogd进程将会立即读取配置并继续运行

/var/lib/logrotate/status #中默认记录上次切割的时间



使用logrotate进行ssh 日志分割


自定义ssh服务的日志类型与存储位置

vi /etc/rsyslog.conf

#把自定义local0 类别的日志保存到/var/log/sshd.log 
#在73行下面插入以下内容

local0.*            /var/log/sshd.log
vi /etc/ssh/sshd_config

#把sshd服务日志默认的类别改为我们自定义的local0
#把SyslogFacility AUTHPRIV 改为

SyslogFacility local0
#重启rsyslog服务
systemctl restart rsyslog

#重启sshd服务
systemctl restart sshd

验证日志是否生成

cat /var/log/sshd.log


切割sshd日志配置文件:

vi /etc/logrotate.d/sshd     #创建一个sshd日志切割配置文件,插入以下内容

/var/log/sshd.log {
    missingok
    weekly
    create 0600 root root
    minsize 10M
    rotate 3
}

#重启服务生效
systemctl restart rsyslog

如果想每分钟或小时切割可以调用计划任务

crontab -e
*/1 * * * * logrotate -vf /etc/logrotate.d/sshd


#测试,不实际切割输出测试结果

logrotate -d /etc/logrotate.d/sshd

#强制切割,不满足条件也切割

#-v 显示执行过程 -f 强制执行
logrotate -vf /etc/logrotate.d/sshd


Powered By Cheug's Blog

Copyright Cheug Rights Reserved.