logrotate详情和坑点

简介: logrotate详情和坑点

logrotate 配置参数


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


坑点

本人亲测


坑一:


logrotate 使用系统cron运行 默认是每天运行一次


所以你设置各种参数,有可能还是不运行的,比如每小时检测日志大小切割,除非你添加每小时运行的计划任务

脚本路径

/etc/cron.daily/logrotate 

解析

#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf ##运行日志轮转命令
EXITVALUE=$?  ##这段是监测轮转是否正常完成,不正常写入系统日志
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0


坑二:


logrotate的三种size方式

请时刻记住不设置计划任务的话 默认每天执行一次日志轮转命令

minsizi   两个条件都满足 ,大小到了,并且执行了日志切割命令 (周期内执行0、1次)
maxsizi   任一条件 (周期内执行1、n次)
sizi      大小到了就执行 ,但是要设置每分钟执行日志切割命令(设置后,周期参数自动失效)(无周期概念)


坑三:


logrotate的轮转周期

会影响轮转命令的执行,

不添加 sizi参数时,为执行命令的最小周期

添加后,根据具体sizi参数变化


坑四


logrotate的dateformat参数

只支持 %Y %m %d %H %s  这五种时间格式
dateformat -%Y%m%d%H.%s
效果 2021072214.1626933601


坑五


切割后继续往旧日志里写日志

系统日志相关

添加这3个参数
   sharedscripts
   postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
   endscript


总结 :个人认为有点鸡肋的功能,你设置了其中的参数,但他不一定生效

不如个人写个shell脚本去检测,清理,一系列操作 添加个计划任务,但是没办法,系统自带的 肯定也是最稳定的,还是人太菜,可能没玩明白吧


示例:

{ 
    compress                ##gizp 压缩
    delaycompress           ##转储后下一次再压缩
    rotate 6                ##备份和压缩备份一共6个
    create 0600 root root   ##创建原文件源属性
    copytruncate            ##无间断转储
    missingok               ##忽略错误
    dateext                 ##启用时间格式
    dateformat -%Y%m%d%H.%s ##自定义时间格式
    sharedscripts           ##轮转后的脚本段 (作用为,告知syslogd,使用新文件写入)发现配置后继续写入旧文件时配置该段
    postrotate              ##轮转后的脚本段
         /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript               ##轮转后的脚本段
}
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
5天前
|
运维 应用服务中间件 Shell
LNMP详解(十六)——Nginx日志切割
LNMP详解(十六)——Nginx日志切割
29 5
|
7月前
|
应用服务中间件 nginx 数据安全/隐私保护
百度搜索:蓝易云【Nginx启动,重启以及基本命令详解!】
请注意,上述命令可能需要在终端中以管理员权限(使用sudo)运行。根据你的系统配置和安装方式,可能会有所不同。确保使用适用于你的系统的正确命令。
123 3
|
8月前
|
缓存 安全 应用服务中间件
百度搜索:蓝易云【nginx常用配置教程。】
这些是Nginx常见配置的基本教程。根据你的需求和应用场景,你可能需要进一步学习和配置其他功能,如负载均衡、缓存、安全设置等。希望这些信息对你有所帮助!
274 0
|
5天前
|
缓存
AutoJS4.1.0实战教程 ---火火视频极速版签到、清理缓存和自动评论
AutoJS4.1.0实战教程 ---火火视频极速版签到、清理缓存和自动评论
19 0
|
5月前
|
监控 测试技术 Go
【测试平台系列】第一章 手撸压力机(六)- 日志服务及使用yaml配置文件
上一章节我们封装TO(测试对象),方便我们以后扩展其他被测的接口或协议。本章我们主要实现以下,我们的日志输出。
|
6月前
|
应用服务中间件 Shell Linux
nginx下载安装和日志切割
nginx下载安装和日志切割
82 0
nginx下载安装和日志切割
|
7月前
|
缓存 应用服务中间件 网络安全
百度搜索:蓝易云【Nginx常用配置及和基本功能详解!】
这些是Nginx的一些常用配置和基本功能。Nginx还具有更多的高级功能和模块,可以根据具体需求进行灵活配置和扩展。
64 0
|
7月前
|
应用服务中间件 Linux nginx
百度搜索:蓝易云【linux系统服务器,nginx日志切割保存教程。】
最后,确保定期检查和清理旧的日志文件,以免占用过多的磁盘空间。您可以使用crontab或其他定时任务工具来定期运行清理命令,例如删除超过一定时间的旧日志文件。
191 0
|
10月前
|
监控 Unix Linux
记录贴:在centos中sentry的安装与使用
在centos中sentry的安装与使用
485 0
|
缓存
如何写一个Compose状态页组件 (修正篇)
在上个月前,我写了这样的一篇文章,开源 | 如何写一个好用的 JetPack Compose 状态页组件 。里面讲了如何去写一个 compose 状态页组件,结果这反而是错误的开始,本篇就是对上述的一个修正及反思过程。
221 0
如何写一个Compose状态页组件 (修正篇)