暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

logrotate日志轮转实践

IT那活儿 2023-10-10
173
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

近期在运维过程中存在服务器/var文件系统使用率告警,发现为messages日志未转存,从服务器运行至今写一个日志,通过logrotate配置转存后解决此问题。




问题分析



收到批量主机/var文件系统使用率告警,登录主机核查,发现主要为messages日志,且没有历史轮转日志,检查其他系统日志有正常轮转,怀疑该messages日志没有配置轮转。

检查logrotate配置,未发现相关日志配置,确定为配置遗漏




问题处理



logrotate的配置文件主要有两个:主配置文件/etc/logrotate.conf和子配置文件/etc/logrotate.d/*。

主配置文件包含了所有基础设置而子配置文件则包含了针对特定日志文件的设置,当两个配置冲突时,以子配置文件为主,以下为主配置文件,每周对日志进行轮转打包,保留4个历史转存日志。

在子配置目录/etc/logrotate.d/将message路径添加已有系统日志配置文件中参考子配置目录/etc/logrotate.d中的系统文件配置,可以将message添加至已有的配置中,或者重新新建配置文件。
这里我们采用新建配置如下:

手动运行logrotate,查看日志已成功转存,且新建日志有程序写入。




logrotate简介



logrotate是基于CRON来运行的在大多数Linux发行版中默认已经安装,是用于管理日志文件的强大工具,通过定期转存和删除日志文件,确保系统日志文件的及时清理,避免磁盘空间浪费。

3.1 命令语法
/usr/sbin/logrotate 选项  <conf文件绝对路径>。
3.2 常用选项
  • -d或者--debug 显示详细命令执行过程。
  • -f或者--force 强制进行日志转存,即使不满足转存条件。
  • -v或者--version 显示命令执行过程。
  • -b 后台执行。
3.3 常用配置
  • compress:对所有旧日志的进行压缩以节省空间。
  • nocompress:不压缩。
  • delaycompress:延迟压缩上一个日志文件的备份,转存日志文件到下一次转存时压缩。
  • monthly、weekly、daily等:表示按指定时间间隔来转存日志文件。例如,“monthly”表示每月转存一次日志文件。
  • prerotate、endscript:日志转存前执行的命令endscript标志着prerotate结束,两个配置必须单独成行,执行命令位于两行之间。
  • postrotate、endscript:日志转存后执行命令,比如某些服务归档后需要重新装载日志或者重启服务,endscript标志着postrotate结束,两个配置必须单独成行,执行命令位于两行之间。
  • missingok:如果日志文件不存在,不报错继续执行下一个操作。
  • notifempty:如果日志文件为空,则不进行转存。
  • create:创建新的日志文件,可以指定权限、用户和组。
  • sharedscripts:共享脚本,一组的多个日志文件至运行一次脚本。
  • size:根据指定的大小来转存日志文件。例如,“100M”表示当日志文件大小超过100MB时进行转存。
  • rotate 'n':保留n个压缩的日志。
  • oldestfirst、newestfirst等:表示按照指定顺序来删除旧日志文件。
  • maxage:日志文件保留天数。

END


本文作者:李易明(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论