当前位置: 首页 > news >正文

Linux系统-日志轮询(logrotate)

作者介绍:简历上没有一个精通的运维工程师。希望大家多多关注作者,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

这是Linux进阶部分的最后一大章。讲完这一章以后,我们Linux进阶部分讲完以后,我们的Linux操作部分就算讲完了,后面的讲解就主要是Linux上的应用软件的讲解,包括虚拟化,容器,云原生,数据库,中间件等。Linux系统相关内容,主要从以下几个方面来讲解:

Linux系统-开关机

Linux系统-单用户模式

Linux系统-救援模式

Linux系统-僵尸&孤儿进程

Linux系统-systemd

Linux系统-logrotate(本章节)

Linux系统-发行版介绍

Linux系统-发行版rocky

Linux系统-发行版ubuntu

Linux系统-初始化

我们在讲Shell编程-案例二的时候讲过,我们可以讲过自定义脚本进行轮询日志,避免单一日志过大以及通过任务计划来删除多久以前的日志,其实系统给我们配置了一个日志轮询工具,他就是logrotate。

logrotate是一个用于管理日志文件的工具,主要用于对日志文件进行轮转、压缩和删除等操作,以防止日志文件无限增长占用过多磁盘空间。

一、主要功能

  1. 日志轮转

    • logrotate可以按照设定的规则定期对日志文件进行轮转。例如,可以设置每天、每周或每月对日志文件进行轮转。当进行轮转时,原有的日志文件会被重命名(通常添加一个时间戳),然后一个新的日志文件开始接收日志记录。

    • 例如,一个名为application.log的日志文件在进行轮转后可能会变成application.log.20241008,同时一个新的application.log文件被创建用于接收新的日志记录。

  2. 压缩日志

    • 可以对轮转后的旧日志文件进行压缩,以节省磁盘空间。常见的压缩格式有gzip等。

    • 比如,轮转后的日志文件application.log.20241008可以被压缩为application.log.20241008.gz

  3. 删除旧日志

    • 根据设定的保留策略,logrotate可以自动删除过旧的日志文件,以防止磁盘空间被过多的历史日志占用。

    • 例如,可以设置只保留最近的几个轮转后的日志文件,或者保留一定时间范围内的日志文件。

二、配置方式

  1. 配置文件

    • logrotate通常通过一个主配置文件(通常是/etc/logrotate.conf)和多个位于/etc/logrotate.d/目录下的特定应用程序的配置文件进行配置。

    • 主配置文件包含一些全局设置,如日志文件的默认轮转频率、压缩方式等。特定应用程序的配置文件则针对具体的日志文件进行详细的轮转规则设置。

  2. 配置参数

    • rotate:指定保留的日志文件轮转次数。

    • weekly/daily/monthly等:设置日志轮转的频率。

    • compress:是否对轮转后的日志文件进行压缩。

    • size:根据日志文件大小进行轮转的条件。

    • missingok:如果日志文件不存在,不产生错误。

    • notifempty:当日志文件为空时,不进行轮转。

三、使用示例

以下是一个简单的/etc/logrotate.d/application配置文件示例:

/var/log/application.log {rotate 7weeklycompressmissingoknotifempty
}

这个配置表示对/var/log/application.log日志文件每周进行一次轮转,保留 7 个轮转后的日志文件,并对轮转后的文件进行压缩。如果日志文件不存在或为空,不产生错误。

总之,logrotate是一个非常实用的工具,可以有效地管理日志文件,确保系统的磁盘空间得到合理利用,同时也方便了对历史日志的查看和分析。

总结

1.其实很多系统日志,默认都是使用的logrotate进行切割,包括我们前面讲的Linux日志中的部分日志。

图片

2.很多程序安装完成以后,也会自动配置logrotate进行切割,比如我们常见的ntp软件chrony,数据库mysql等。

图片

3.虽然logrotae的执行是通过任务计划的crond.daily,但是实际上他并不是每天凌晨12点自动执行,而是有一个随机性,大概在凌晨3点以后。具体的可以查看/etc/anacrontab 这个文件,所以如果要固定时间执行,就需要给他一个准确的时间。

4.这里要注意,如果你的日志随时都处于打开状态,还需要切割日志以后重新给进程信号,让它重新写日志文件,否则它还会持续通过文件句柄写日志。

运维小路

一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!

http://www.lryc.cn/news/477644.html

相关文章:

  • 机器学习在时间序列预测中的应用与实现——以电力负荷预测为例(附代码)
  • 白杨SEO:百度在降低个人备案类网站搜索关键词排名和流量?怎样应对?【参考】
  • 前端实现json动画(附带示例)
  • AI 写作(一):开启创作新纪元(1/10)
  • C#-类:索引器
  • Neo4j Cypher WHERE子句详解 - 初学者指南
  • 【CSS】标准怪异盒模型
  • 栈详解
  • 硬盘 <-> CPU, CPU <-> GPU 数据传输速度
  • 数据编排与ETL有什么关系?
  • 来了解一下!!!——React
  • 用vite创建项目
  • json-server的使用(根据json数据一键生成接口)
  • 半波正弦信号的FFT变换
  • Python数据分析NumPy和pandas(二十三、数据清洗与预处理之五:pandas的分类类型数据)
  • redis源码系列--(二)--multi/exec/eval命令执行流程
  • 【力扣打卡系列】移动零(双指针)
  • 无源元器件-电容选型参数总结
  • Linux下的socket编程
  • 【算法】Floyd多源最短路径算法
  • iOS SmartCodable 替换 HandyJSON 适配记录
  • 使用 axios 拦截器实现请求和响应的统一处理(附常见面试题)
  • 阿里 Sentinel
  • 【点云网络】 pointnet 和 pointnet++
  • .net core mvc 控制器中页面跳转
  • 大学适合学C语言还是Python?
  • 跳表原理课堂笔记
  • Windows系统使用OpenSSL生成自签名证书
  • 定位new的表达式
  • 矩阵特殊打印方式