php-fpm切日志,使用logrotate对nginx/php-fpm做日志转储

使用logrotate对nginx/php-fpm做日志转储

2016-12-23

2135

230942matkx93adpo3osp6-300x299.png

logrotate是linux系统日志的管理工具,目前主流的Linux发行版上都默认安装有logrotate包。他可以轮换,压缩,邮件系统日志文件。对于Linux 的系统安全来说,日志文件是极其重要的工具。日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到。对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间。除此之外,处理一个单个的庞大日志文件也常常是件十分棘手的事。

logrotate可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。本文主要介绍使用logrotate对nginx/php-fpm等日志进行切割转储。

一:logrotate配置文件

/etc/logrotate.conf, 通常不需要对它进行修改。

/etc/logrotate.d/,该目录里的所有文件都会被主动的读入 /etc/logrotate.conf 中执行。另外,如果 /etc/logrotate.d/ 里面的文件中没有设定一些细节,则会以 /etc/logrotate.conf 这个文件的设定来作为默认值。

二:配置nginx

PHP

[root@vagrant-centos64 logrotate.d]# vi /etc/logrotate.d/nginx

/var/log/nginx/*log {

daily

rotate 10

missingok

notifempty

compress

sharedscripts

postrotate

kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null || :

endscript

1

2

3

4

5

6

7

8

9

10

11

[root@vagrant-centos64logrotate.d]# vi /etc/logrotate.d/nginx

/var/log/nginx/*log{

daily

rotate10

missingok

notifempty

compress

sharedscripts

postrotate

kill-USR1$(cat/var/run/nginx.pid2>/dev/null)2>/dev/null||:

endscript

三:配置php-fpm

PHP

[root@vagrant-centos64 logrotate.d]# vi /etc/logrotate.d/php-fpm

/var/log/php-fpm/*log {

missingok

notifempty

sharedscripts

delaycompress

postrotate

kill -SIGUSR1 `cat /var/run/php-fpm/php-fpm.pid 2>/dev/null` 2>/dev/null || true

endscript

1

2

3

4

5

6

7

8

9

[root@vagrant-centos64logrotate.d]# vi /etc/logrotate.d/php-fpm

/var/log/php-fpm/*log{

missingok

notifempty

sharedscripts

delaycompress

postrotate

kill-SIGUSR1`cat/var/run/php-fpm/php-fpm.pid2>/dev/null`2>/dev/null||true

endscript

四:logrotate字段详解

daily: 日志文件将按日轮循。其它可用值为‘monthly’,‘weekly’或者‘yearly’。

rotate 10: 一次将存储10个归档日志。对于第11个归档,时间最久的归档将被删除。

compress: 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。不需要压缩时,用nocompress 参数。

sharedscripts:只为整个日志组运行一次的脚本。

delaycompress: 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。

missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。

notifempty: 如果日志文件为空,轮循不会进行。

create 644 root root: 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。

postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。

size size: 当日志文件到达指定的大小时才转储,Size 可以指定 bytes (缺省)以及KB (sizek)或者MB (sizem).

errors address: 专储时的错误信息发送到指定的Email 地址。

ifempty: 即使是空文件也转储,这个是 logrotate 的缺省选项。notifempty 如果是空文件的话,不转储

mail address: 把转储的日志文件发送到指定的E-mail 地址,nomail 转储时不发送日志文件

dateext:日志rotate后再后面加日期,例如:access.log轮转后会变为access.log-20130803

五:执行logrotate

1,手动执行

满足转储条件时:

PHP

[root@vagrant-centos64 /]# logrotate -v /etc/logrotate.conf

1

[root@vagrant-centos64/]# logrotate -v /etc/logrotate.conf

没有满足条件时,如果文件的时间小于一天,则用上面的命令无法生效,此时需要用”-f”强制执行:

PHP

[root@vagrant-centos64 /]# logrotate -vf /etc/logrotate.conf

1

[root@vagrant-centos64/]# logrotate -vf /etc/logrotate.conf

2,crond执行

系统默认会自动创建logrotate文件在# /etc/cron.daily/ 下日常执行。

参考链接:

nginx请求状态访问量等统计 下一篇: 简要测试服务器并发处理能力

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值