日志文件对于开发运维是非常有用的,通过日志可以跟踪系统的使用以及排查故障。但为了获取到更多的日志信息,日志文件就变得很大,需要占用更多的磁盘空间。系统运行一段时间后,日志文件就会不可控的增大。抛开磁盘占用,肥大的日志文件本身也会拖慢系统的运行。所以,日志文件要保持在一个可控的范围之内。有效管理日志文件也是运维的一个重要任务。通常做法是需要每天做一次日志的归档。
Log rotation、日志分割、日志滚动、日志轮转等,都说的是定期归档系统的日志,开启一个新的日志记录,删除旧的日志记录。
日志rotate有很多方法,比如:
Apache:/usr/local/apache2/bin/rotatelogs
Framework:Log4j,Logback的RollingFileAppender等。
Linux自身提供了一个非常实用 logrotate 功能,它可以自动对日志进行截断、压缩以及删除旧的日志文件。主流Linux发行版上都默认安装有logrotate包,通过 man logrotate 能查看命令的详细使用方法。需要注意的是logrotate自身不是Demon的,需要借助crond实现。
(1)相关文件
/usr/sbin/logrotate logrotate命令
/etc/cron.daily/logrotate 每天通过这个shell执行logrotate
/etc/logrotate.conf 执行Shell时指定的配置文件
/etc/logrotate.d/ 这个文件夹下放置了各个软件自己的日志滚动配置,比如httpd、yum、mysql
(2)配置logrotate.conf
1)logrotate是日志文件位置定义规则
单一文件定义
/tmp/output.log {
}
多个文件同时定义
/usr/local/nginx/logs/access.log /usr/local/nginx/logs/error.log {
}
通配符定义
/usr/local/domain1.com/log/*log {
}
2)滚动策略
1-文件大小
比如,当一个文件达到30k时,开始滚动日志文件
/tmp/output.log {
size 30k
create 0600 root root
}
2-daily/weekly/monthly
比如,每天滚动日志文件
/tmp/output.log {
daily
create 0600 root root
}
3)创建文件
日志文件被归档后,需要创建新的文件继续记录日志
1-create
create是创建了一个新的文件,但是一般日志文件都会被handler,所以不能新建。
2-copytruncate
将源文件copy之后,清空文件内容。
/tmp/output.log {
daily
copytruncate
}
4)保留文件数
自动清除旧的文件,保留一定需要的文件
/tmp/output.log {
daily
create 0600 root root
rotate 7
}
rotate是以个数为单位的,maxage是以天数为单位的,如果以天来轮转日志,两者一致。
5)归档文件扩展
默认是从数字1开始
/tmp/output.log.1
/tmp/output.log.2
/tmp/output.log.3
日期
/tmp/output.log {
daily
create 0600 root root
rotate 7
dateext
}
默认是/tmp/output.log-YYYYMMDD
以下可以设置日期格式为/tmp/output.log_YYYYMMDD
/tmp/output.log {
daily
create 0600 root root
rotate 7
dateext
dateformat _%Y%m%d
}
6)压缩归档
/tmp/output.log {
daily
create 0600 root root
rotate 7
dateext
compress
}
归档文件为:/tmp/output.log-YYYYMMDD.gz
7)配置文件中执行shell(postrotate、sharedscripts)
/tmp/output.log {
size 1k
copytruncate
rotate 4
compress
postrotate
/home/rensanning/myscript.sh
endscript
}
对于多个日志文件,在一个配置里,结果是相同的,使用sharedscripts可以避免Shell被执行多次。
logrotate 在执行 postrotate 脚本前先检查日志文件是否需要rotate,需要时只执行一次postrotate 脚本。
/home/demo/public_html/domain1.com/log/*log /home/demo/public_html/domain2.com/log/*log {
rotate 14
daily
compress
sharedscripts
postrotate
/usr/sbin/apachectl graceful > /dev/null
endscript
}
8)日志文件不存在时不报错
/tmp/output.lo {
size 1k
missingok
}
(3)归档状态
logrotate会保存归档状态信息在文件logrotate.status里,默认路径是:/var/lib/logrotate.status
[root@localhost ~]# cat /var/lib/logrotate.status
logrotate state -- version 2
"/var/log/yum.log" 2018-1-1
"/var/log/httpd/*log" 2014-11-14
"/var/lib/mysql/mysqld.log" 2015-6-8
"/var/log/httpd/error_log" 2016-6-19
"/var/log/httpd/access_log" 2016-6-19
"/var/log/cron" 2018-2-4
左侧引号内是日志文件路径,右侧日期是最新rotate的日期。
查看该文件可以知道某个日志文件的最新状态,如果由于NTP时间同步问题,可以删除问题日志文件那一行重新rotate。
(4)执行选项
默认执行
# /usr/sbin/logrotate /tmp/log/logrotate.conf
主要选项
# /usr/sbin/logrotate -vdf /tmp/log/logrotate.conf
-v 显示logrotate执行过程中的详细信息
-d 不实际执行rotate,用于检查配置是否正确
-f 强制执行,如果发现某个应该被rotate的日志文件没有rotate,可以使用该选项强制rotate
分享到:
相关推荐
ansible-logrotate, Ansible星系角色设置logrotate和其他旋转脚本 logrotate 安装 logrotate,通过指定指令列表来设置额外的logrotate脚本。要求无角色变量logrotate_scripts: rotation脚本的列表和用于旋转的指令。...
pm2-logrotate的linux离线安装包。 安装说明详见:https://blog.csdn.net/diaya/article/details/123852658
最近用nginx,想按日期生成文件,方便日志清理。nginx以前的版本都是不支持的,后来好像更新了这个问题,但是不想太复杂,不想去研究,就用logrotate配置下,还是挺方便的
logrotate winform版本 服务器日志压缩
Linux 自带神器 logrotate 详解.doc
网上有很多关于logrotate的资料,但是解释都不一定完整,并且部分解释还不多,本文档经过个人测试,对部分属性添加了自己的解释,并附带使用命令,如果您有这方面的问题可以下载使用,另外发现问题请即时通知于我,...
linux的nginx日志分割配置和理解,希望给大家带来方便
官方离线安装包,测试可用。请使用rpm -ivh [rpm完整包名] 进行安装
logrotate, logrotate厨师 cookbook 开发库 cookbook 管理logrotate包并提供一个资源来管理特定的logrotate配置。要求平台应该在任何包含'logrotate'包的平台上工作,并将logrotate配置写入/etc/logrotate.d.测试
官方源码,未改动
课程概述课程以logrotate为主线,突出实战应用性,全面深入讲解自动化处理应用日志的方方面面(包括日志切割/日志轮询、日志压缩、日志周期性删除等),传授整套自动化处理日志的知识体系,完整覆盖到不同阶段同学的...
logrotate工具是为了方便进行日志管理而产生的一个工具,主要可以完成的工作包含:基于cron的天、周、月、文件大小进行日志的滚动备份、压缩、删除甚至是发送邮件。
此容器基于版本最新版本是1.0.0,包括 Logrotate 3.8.8 inem0o/logrotateinem0o/logrotate:latestinem0o/logrotate:1.0inem0o/logrotate:1.0.0配置默认配置存储在/logrotate.conf ,您应该使用/logrotate.conf卷...
pm2-logrotate, 自动旋转由PM2管理的所有应用程序日志 描述PM2模块,可以自动旋转由PM2管理的进程的日志。安装pm2 install pm2-logrotate要安装特定版本使用 @<version> 后缀pm2 install pm2-log
1、关于日 2、安装logrotate 3、实践配置logrotate 4、logrotate生产应用 5、附录
这是用于logrotate的Puppet模块,仅提供软件包安装和文件配置。 基于Alessandro Franceschi / Lab42的Example42布局 官方网站: : 官方git仓库: : logrotate :: rule定义已改编自: 以此许可证发布: : ...
logrotate实用程序旨在简化在生成大量日志文件的系统上对日志文件的管理。 Logrotate允许自动循环压缩,删除和邮寄日志文件。 可以将Logrotate设置为每小时,每天,每周,每月或当日志文件达到特定大小时处理日志...
若无法在线安装,可下载包,执行脚本,进行离线安装pm2的日志模块
一.Logrotate工具介绍 Logrotate是一个日志文件管理工具,它是Linux默认自带的一个日志切割工具。用来把旧文件轮转、压缩、删除,并且创建新的日志文件。我们可以根据日志文件的大小、天数等来转储,便于对日志文件...
ansible.logrotate:安装和配置logrotate