实战-ssh日志分割-nginx日志分割

日志的切割

在linux下的日志会定期进行滚动增加,我们可以在线对正在进行回滚的日志进行指定大小的切割(动态),如果这个日志是静态的。比如没有应用向里面写内容。那么我们也可以用split工具进行切割;其中Logrotate支持按时间和大小来自动切分,以防止日志文件太大。

logrotate配置文件主要有:

/etc/logrotate.conf 以及 /etc/logrotate.d/ 这个子目录下的明细配置文件。

logrotate的执行由crond服务调用的。

# vim /etc/cron.daily/logrotate   #查看logrotate脚本内容

logrotate程序每天由cron在指定的时间(/etc/crontab)启动

日志是很大的,如果让日志无限制的记录下去 是一件很可怕的事情,日积月累就有几百兆占用磁盘的空间,

如果你要找出某一条可用信息:→海底捞针

日志切割:

当日志达到某个特定的大小,我们将日志分类,之前的日志保留一个备份,再产生的日志创建一个同名的文件保存新的日志.

实战演示--日志切割

编辑配置文件

# vim /etc/logrotate.conf

image.png

说明:(全局参数)

weekly :   每周执行回滚,或者说每周执行一次日志回滚

rotate:    表示日志切分后历史文件最多保存离现在最近的多少份   [rəʊˈteɪt] 旋转

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

dateext :  使用日期为后缀的回滚文件  #可以去/var/log目录下看看

单独配置信息

image.png

/var/log/btmp {                      指定的日志文件的名字和路径

    missingok                      如果文件丢失,将不报错

    monthly                       每月轮换一次

    create 0664 root utmp         设置btmp这个日志文件的权限,属主,属组

    minsize 1M                         文件超过1Mà进行回滚,所以大家要知道它不一定每个月都会进行分割,要看这个文件大小来定

    rotate 1                               日志切分后历史文件最多保存1份,不含当前使用的日志

其它参数说明:

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

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

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

delaycompress: 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。

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

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

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

  postrotate/endscript:在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。

/var/lib/logrotate/status中默认记录logrotate上次轮换日志文件的时间。

实战-使用 logrotate 进行ssh日志分割

定义了ssh日志存储在/var/log/sshd的基础上执行:

# vim /etc/logrotate.d/sshd   #创建一个sshd配置文件,插入以下内容:

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

#systemctl restart rsyslog

# logrotate  -d  /etc/logrotate.d/sshd   #预演,不实际轮循

# logrotate -vf /etc/logrotate.d/sshd  #强制轮循,也就是说即使轮循条件没有满足,也可以通过加-f 强制让logrotate轮循日志文件

-v 显示指令执行过程

-f 强制执行

# ls /var/log/sshd*

/var/log/sshd.log  /var/log/sshd.log.1  /var/log/sshd.log.2  /var/log/sshd.log.3

再次查看日志文件大小,已经为0

# ll -h /var/log/sshd.log

-rw------- 1 root root 0 5月  22 00:49 /var/log/sshd.log

例2:实战-使用 logrotate 进行nginx日志分割

前提已经搭建好nginx,大家了解一下,后期讲了nginx后你在练习这个

# vim /etc/logrotate.d/nginx   

/usr/local/nginx/logs/*.log {     #指定日志文件位置,可用正则匹配
daily                #调用频率,有:daily,weekly,monthly可选
rotate 5               #一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。
sharedscripts           #所有的日志文件都轮转完毕后统一执行一次脚本
postrotate           #执行命令的开始标志
    if [ -f /usr/local/nginx/logs/nginx.pid ]; then    #判断nginx是否启动
        /usr/local/nginx/sbin/nginx -s reload
        #让nginx重新加载配置文件,生成新的日志文件,如果nginx没启动不做操作
    fi
endscript  #执行命令的结束标志
}

没有切割日志: 日志150G了。。。

image.png

版权声明:
作者:WaterBear
链接:https://l-t.top/1503.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>