`
rensanning
  • 浏览: 3549431 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38168
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607363
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682405
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89400
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:401900
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69711
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91744
社区版块
存档分类
最新评论

logrotate入门

 
阅读更多
日志文件对于开发运维是非常有用的,通过日志可以跟踪系统的使用以及排查故障。但为了获取到更多的日志信息,日志文件就变得很大,需要占用更多的磁盘空间。系统运行一段时间后,日志文件就会不可控的增大。抛开磁盘占用,肥大的日志文件本身也会拖慢系统的运行。所以,日志文件要保持在一个可控的范围之内。有效管理日志文件也是运维的一个重要任务。通常做法是需要每天做一次日志的归档。

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自动化处理日志入门、进阶实战与高阶精通All in one系列

    课程概述课程以logrotate为主线,突出实战应用性,全面深入讲解自动化处理应用日志的方方面面(包括日志切割/日志轮询、日志压缩、日志周期性删除等),传授整套自动化处理日志的知识体系,完整覆盖到不同阶段同学的...

    Llinux入门学习资料

    Linux入门学习资料是一份专为新手设计的指南,旨在帮助初学者快速掌握Linux操作系统的基础知识和常用技能。在这个资源包中,重点涵盖了以下几个关键领域: 1. **Linux基础概念**: - Linux是一种自由和开放源码的...

    抄写员:Asuswrt-Merlin的syslog-ng和logrotate安装程序

    〜抄写〜用于Asuswrt-Merlin的syslog-ng和logrotate安装程序scribe是用于运行Asuswrt-Merlin的ASUS路由器的syslog-ng和logrotate安装程序入门先决条件在支持的ASUS路由器上运行的 Entware安装,优选使用 固件中启用...

    LINUX从入门到精通教学

    对于系统维护,理解日志文件(如/var/log)的作用,学会使用logrotate进行日志管理,以及如何备份和恢复数据是十分重要的。同时,掌握软件包管理器(如apt、yum)的使用,可以轻松安装和更新系统软件。 在进阶阶段...

    Linux 入门经典教程

    了解`df`和`du`用于查看磁盘空间,`logrotate`管理日志文件。 通过这个经典Linux入门教程,你将学会如何有效利用Linux,无论是作为开发环境、服务器还是日常使用。继续学习,探索更多高级主题,如系统调用、内核...

    Linux命令从入门到精通

    "top"或"htop"可以实时监控系统资源使用情况,而"logrotate"则帮助管理日志文件,保持系统的整洁与高效。 对于软件安装和管理,"apt"或"yum"(根据不同的Linux发行版)是安装软件包的常用工具,"dpkg"和"rpm"则用于...

    linux入门教程 新手知识

    - `logrotate`:日志文件管理。 9. **软件开发和版本控制** Linux是开发人员的常用平台,熟悉Git版本控制系统和编译构建工具(如make、autotools)对开发者非常重要。 10. **Linux社区和资源** 在Linux社区(如...

    linux-入门级教程

    学习查看系统状态(如free -m查看内存,top或htop查看进程),了解如何启动、停止服务,以及使用logrotate进行日志管理,有助于优化系统性能和问题排查。 11. **备份与恢复**: 熟悉如何使用tar命令创建和提取...

    Linux从入门到精通

    系统监控也是重要一环,如了解top或htop命令显示系统资源使用情况,netstat检查网络连接状态,iftop查看网络带宽使用,以及logrotate管理日志文件等。 在深入学习之前,理解Linux的目录结构至关重要。根目录(/)下...

    linux教程-适合入门

    同时,还会讲解计划任务(cron)的设置,以及如何使用logrotate来管理日志文件。 在软件管理和包管理系统方面,不同的Linux发行版可能使用不同的工具,如apt(Debian/Ubuntu)、yum(CentOS/RHEL)或dnf(Fedora)...

    Linux入门常用命令

    ### Linux入门常用命令详解 #### 1. Linux进入与退出系统 Linux系统通过用户账号进行权限管理和资源分配,用户必须输入正确的账号和密码才能登录系统。Linux系统中有两种类型的账号: 1. **root** - 超级用户账号...

    linux初级教程,入门用

    3. **系统日志**:`dmesg`查看内核消息,`less`或`cat`阅读日志文件,`logrotate`进行日志轮换。 4. **系统服务**:`systemctl`管理Systemd服务,了解启动、停止、重启等操作。 五、Linuxhl.chm与LINUX命令大全2....

    Ngnix从入门到精通

    8. Nginx日志切割:日志切割是定期对日志文件进行分割的过程,便于管理和维护大量日志文件,可通过计划任务配合logrotate等工具实现。 9. Nginx重写规则指南:Nginx的rewrite模块可以用于修改请求的URI,通过正则...

    Linux命令从入门到精通十一到二十章

    本教程涵盖了Linux命令从入门到精通的第十一至第二十章,旨在帮助用户深入了解并熟练运用这些基础及进阶的命令。以下将详细介绍这些章节涵盖的知识点。 第十一章:文件与目录操作 在这一章,学习者会了解到Linux...

    Linux从入门到实战学习教程-7系统管理.pptx

    "Linux从入门到实战学习教程-7系统管理.pptx"是一份深入探讨Linux系统管理的教程,涵盖了关键的系统管理任务,包括监控进程、设置防火墙、日志操作、后台管理以及查看资源等核心主题。以下是对这些知识点的详细说明...

    Linux命令从入门到精通一到十章

    - `logrotate`: 自动轮换日志文件,避免单个日志文件过大。 以上仅是“Linux命令从入门到精通”一书中部分关键知识点的概述,实际学习过程中,还需要结合实践操作,加深理解和记忆,才能真正精通Linux命令行操作。...

    linux学习指南(入门)

    2. **logrotate**:自动轮换和压缩日志文件。 3. **cron**:定时任务调度。 4. **shutdown/reboot/halt**:关机、重启或暂停系统。 这份"Linux新手学习指南"将涵盖这些主题,并逐步指导你从基础到进阶,让你在Linux...

    Linux环境下开发入门.docx

    配置日志记录,并使用 `logrotate` 管理日志文件,防止日志文件占用过多磁盘空间。 **性能监控** 使用 `top`、`htop`、`vmstat`、`iostat` 等工具监控系统性能,及时发现瓶颈并进行优化。 **部署** 使用 `...

Global site tag (gtag.js) - Google Analytics