首页 > 编程知识 正文

京东日志管理平台,日志管理工具

时间:2023-05-05 08:23:51 阅读:259063 作者:1690

a.logrotate 简介

logrotate是一个日志管理程序,用来把旧的日志文件删除(备份),并创建新的日志文件,这个过程称为“转储”。

我们可以根据日志的大小,或者根据其使用的天数来转储。

logrotate 的执行由crond服务实现。在/etc/cron.daily目录中,有个文件logrotate,它实际上是个shell script,用来启动logrotate。logrotate程序每天由cron在指定的时间(/etc/crontab)启动。因此,使用ps是无法查看到logrotate的。如果它没有起来,就要查看一下crond服务有没有在运行。在执行logrotate时,需要指定其配置文件/etc/logrotate.conf。

每个存放在/etc/logrotate.d目录里的文件,都有上面格式的配置信息。在{}中定义的规则,如果与logrotate.conf中的冲突,以/etc/logrotatate.d/中的文件定义的为准。

b.参数

-?或--help  在线帮助。

-d或--debug  详细显示指令执行过程,便于排错或了解程序执行的情况。

-f或--force  强行启动记录文件维护操作,纵使logrotate指令认为没有需要亦然。

-s或--state=  使用指定的状态文件。

-v或--version  显示指令执行过程。

-usage  显示指令基本用法。

c.配置文件

执行文件:/usr/sbin/logrotate

主配置文件:/etc/logrotate.conf

自定义配置文件:/etc/logrotate.d/*.conf

/etc/logrotate.d/ - 通常一些第三方软件包,会把自己私有的配置文件,也放到这个目录下。如yum,zabbix-agent,syslog等。

修改配置文件后,并不需要重启服务。

由于logrotate实际上只是一个可执行文件,不是以daemon运行。

d.日志分割原理

系统会按照计划的频率运行logrotate,通常是每天。大多数的Linux发行版本上,计划每天运行脚本位于/etc/cron.daily/logrotate

当logrotate 运行的时候,它会读取自身配置文件来决定需要分割日志文件的路径,分割日志文件的频率及保留多少日志存档。

e.常用参数

compress 通过gzip 压缩转储以后的日志

nocompress 不必压缩时,用这个参数

nocreate 不建立新的日志文件

delaycompress 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩 nodelaycompress 覆盖 delaycompress 选项,转储同时压缩。

ifempty 即使是空文件也转储,这个是 logrotate 的缺省选项。

notifempty 如果是空文件的话,不转储

missingok 如果日志不存在则忽略该警告信息

prerotate/endscript 在转储以前需要执行的命令能放入这个对,这两个关键字必须独立成行

postrotate/endscript 在转储以后需要执行的命令能放入这个对,这两个关键字必须独立成行

rotate 命令指定分割日志的数量,也就是保留多少个日志,当新的分割日志产生时,会删除最老的

weekly daily monthly yearly 定义分割频度

size 定义文件大小

f.logrotate主配置文件详解

# see "man logrotate" for details

# rotate log files weekly

weekly #每周轮转一次

# keep 4 weeks worth of backlogs

rotate 4 #保留四个日志文件

# create new (empty) log files after rotating old ones

create #rotate后,创建一个新的空文件

# uncomment this if you want your log files compressed

#compress #默认是不压缩的

# RPM packages drop log rotation information into this directory

include /etc/logrotate.d #这个目录下面配置文件生效

# no packages own wtmp — we’ll rotate them here

/var/log/wtmp { #定义/var/log/wtmp这个日志文件;

monthly #每月轮转一次,取代了上面的全局设定的每周轮转一次;

minsize 1M #定义日志必须要大于1M大小才会去轮转;

create 0664 root utmp #新的日志文件的权限,属主,属主;

rotate 1 #保留一个,取代了上面的全局设定的保留四个;

}

/var/log/btmp { #定义/var/log/btmp这个日志文件;

missingok #如果日志丢失, 不报错;

monthly

create 0600 root utmp

rotate 1

}

记住,在 /etc/logrotate.d/ 目录下的应用配置文件继承所有的 /etc/logrotate.conf 默认参数

g.nginx日志logrotate配置说明

##解释nginx 的logrotate 配置

##固定格式,支持通配符匹配

/var/log/nginx_*.log {

daily ##每天转储一次

missingok ##如果日志不存在则忽略该警告信息

dateext ##转储以后以日期作为后缀

ifempty ##即使是空文件也转储,这个是 logrotate 的缺省选项。

rotate 20 ##保留20份日志文件;log.1...log.20

sharedscripts ##共享脚本,下面的postrotate endscript中的脚本只执行一次即可;

postrotate ##

/netpas/nginx/sbin/nginx -c /netpas/nginx/conf/nginx.conf -p /netpas/nginx -s reopen > /dev/null 2>/dev/null || true

/netpas/nginx/sbin/nginx -c /netpas/nginx/conf/nginx_udp.conf -p /netpas/nginx -s reopen > /dev/null 2>/dev/null || true

endscript

}

postrotate endscript #日志轮换过后指定指定的脚本,endscript参数表示结束脚本;

Logrotate每次分割文件后会运行 postrotate 后的命令。最通常的作用是让应用重启,以便切换到新的日志文件。

第一部分是匹配的文件模式,可以是通配符,注意:如果对应的日志不存在会报错,中断处理,可以自行用调试模式测试。(可以添加missingok缓解)

{ ... } 花括号里面的就是具体的指令参数了,logrotate支持一些hook预处理,可以在执行之前或者之后调用命令或者自己的脚本。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。