日志文件对于开发运维是非常有用的,通过日志可以跟踪系统的使用以及排查故障。但为了获取到更多的日志信息,日志文件就变得很大,需要占用更多的磁盘空间。系统运行一段时间后,日志文件就会不可控的增大。抛开磁盘占用,肥大的日志文件本身也会拖慢系统的运行。所以,日志文件要保持在一个可控的范围之内。有效管理日志文件也是运维的一个重要任务。通常做法是需要每天做一次日志的归档。
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
分享到:
相关推荐
课程概述课程以logrotate为主线,突出实战应用性,全面深入讲解自动化处理应用日志的方方面面(包括日志切割/日志轮询、日志压缩、日志周期性删除等),传授整套自动化处理日志的知识体系,完整覆盖到不同阶段同学的...
Linux入门学习资料是一份专为新手设计的指南,旨在帮助初学者快速掌握Linux操作系统的基础知识和常用技能。在这个资源包中,重点涵盖了以下几个关键领域: 1. **Linux基础概念**: - Linux是一种自由和开放源码的...
〜抄写〜用于Asuswrt-Merlin的syslog-ng和logrotate安装程序scribe是用于运行Asuswrt-Merlin的ASUS路由器的syslog-ng和logrotate安装程序入门先决条件在支持的ASUS路由器上运行的 Entware安装,优选使用 固件中启用...
对于系统维护,理解日志文件(如/var/log)的作用,学会使用logrotate进行日志管理,以及如何备份和恢复数据是十分重要的。同时,掌握软件包管理器(如apt、yum)的使用,可以轻松安装和更新系统软件。 在进阶阶段...
了解`df`和`du`用于查看磁盘空间,`logrotate`管理日志文件。 通过这个经典Linux入门教程,你将学会如何有效利用Linux,无论是作为开发环境、服务器还是日常使用。继续学习,探索更多高级主题,如系统调用、内核...
"top"或"htop"可以实时监控系统资源使用情况,而"logrotate"则帮助管理日志文件,保持系统的整洁与高效。 对于软件安装和管理,"apt"或"yum"(根据不同的Linux发行版)是安装软件包的常用工具,"dpkg"和"rpm"则用于...
- `logrotate`:日志文件管理。 9. **软件开发和版本控制** Linux是开发人员的常用平台,熟悉Git版本控制系统和编译构建工具(如make、autotools)对开发者非常重要。 10. **Linux社区和资源** 在Linux社区(如...
学习查看系统状态(如free -m查看内存,top或htop查看进程),了解如何启动、停止服务,以及使用logrotate进行日志管理,有助于优化系统性能和问题排查。 11. **备份与恢复**: 熟悉如何使用tar命令创建和提取...
系统监控也是重要一环,如了解top或htop命令显示系统资源使用情况,netstat检查网络连接状态,iftop查看网络带宽使用,以及logrotate管理日志文件等。 在深入学习之前,理解Linux的目录结构至关重要。根目录(/)下...
同时,还会讲解计划任务(cron)的设置,以及如何使用logrotate来管理日志文件。 在软件管理和包管理系统方面,不同的Linux发行版可能使用不同的工具,如apt(Debian/Ubuntu)、yum(CentOS/RHEL)或dnf(Fedora)...
### Linux入门常用命令详解 #### 1. Linux进入与退出系统 Linux系统通过用户账号进行权限管理和资源分配,用户必须输入正确的账号和密码才能登录系统。Linux系统中有两种类型的账号: 1. **root** - 超级用户账号...
3. **系统日志**:`dmesg`查看内核消息,`less`或`cat`阅读日志文件,`logrotate`进行日志轮换。 4. **系统服务**:`systemctl`管理Systemd服务,了解启动、停止、重启等操作。 五、Linuxhl.chm与LINUX命令大全2....
8. Nginx日志切割:日志切割是定期对日志文件进行分割的过程,便于管理和维护大量日志文件,可通过计划任务配合logrotate等工具实现。 9. Nginx重写规则指南:Nginx的rewrite模块可以用于修改请求的URI,通过正则...
本教程涵盖了Linux命令从入门到精通的第十一至第二十章,旨在帮助用户深入了解并熟练运用这些基础及进阶的命令。以下将详细介绍这些章节涵盖的知识点。 第十一章:文件与目录操作 在这一章,学习者会了解到Linux...
"Linux从入门到实战学习教程-7系统管理.pptx"是一份深入探讨Linux系统管理的教程,涵盖了关键的系统管理任务,包括监控进程、设置防火墙、日志操作、后台管理以及查看资源等核心主题。以下是对这些知识点的详细说明...
- `logrotate`: 自动轮换日志文件,避免单个日志文件过大。 以上仅是“Linux命令从入门到精通”一书中部分关键知识点的概述,实际学习过程中,还需要结合实践操作,加深理解和记忆,才能真正精通Linux命令行操作。...
2. **logrotate**:自动轮换和压缩日志文件。 3. **cron**:定时任务调度。 4. **shutdown/reboot/halt**:关机、重启或暂停系统。 这份"Linux新手学习指南"将涵盖这些主题,并逐步指导你从基础到进阶,让你在Linux...
配置日志记录,并使用 `logrotate` 管理日志文件,防止日志文件占用过多磁盘空间。 **性能监控** 使用 `top`、`htop`、`vmstat`、`iostat` 等工具监控系统性能,及时发现瓶颈并进行优化。 **部署** 使用 `...