linux日志生成工具,linux系统日志管理工具logrotate之生产实例

本文介绍了如何在CentOS系统中使用logrotate进行Apache和Nginx的日志轮询,包括利用系统内置机制、Apache自带的rotatelogs以及cronolog工具。还讨论了其他注意事项和生产环境配置示例。

四、生产实例――apache日志压缩及轮询的三种方法

环境centos5.5x86_64logrotate-3.7.4-9(系统默认自带安装)

1.法一:利用Linux系统自身的日志文件轮循机制logrotate

/etc/logrotate.conf全局配置文件默认

修改/etc/logrotate.d/httpdapache的日志文件管理设置即可,利用crond的cron.daily/logrotate缺省设置来每天运行.

[root@wyan ~]# cat /etc/logrotate.d/httpd

/var/log/httpd/*access_log {

rotate 99#保留99次滚动的日志

daily#日志文件每天进行滚动

compress

delaycompress

nomail

missingok# If the log file is missing, go on to the next one without issuing an error message.

notifempty#如果日志为空则不进行滚动

sharedscripts

postrotate

/sbin/service httpd reload > /dev/null 2>/dev/null || true

endscript

}

/var/log/httpd/*error_log {

rotate 2

daily

compress

delaycompress

nomail

missingok

notifempty

sharedscripts

postrotate

/sbin/service httpd reload > /dev/null 2>/dev/null || true

endscript

}

2.法二:利用apache自带的日志轮循程序rotatelogs

通过管道将日志发给另外一个程序进行处理,格式“|程序名”,apache配置文件修改:

CustomLog "|/usr/bin/gzip -c >> /var/log/access_log.gz" common#这样就可以使用Apache自带的轮循工具rotatelogs来对日志文件进行轮循。rotatelogs基本是按时间或大小来控制日志的。

CustomLog "|/www/bin/rotatelogs/www/logs/secfocus/access_log 86400" common

#上面内容表示,Apache访问日志被发送给程序rotatelogs;rotatelogs将日志写入/www/logs/ secfocus/access_log,并每隔86 400秒(1天)对日志进行一次轮循。轮循以后的文件名为/www/logs/ secfocus/access_log.nnn,这里nnn是开始记录日志的时间。

3.法三:使用在apache的FAQ中发展已经比较成熟的日志轮循工具cronolog

下载和安装cronolog(),默认情况下,cronolog安装在/usr/local/sbin下,apache配置文件修改:

CustomLog "|/usr/local/sbin/cronolog/www/logs/secfocus/%w/access_log" combined这里%w表示按照日期在不同的目录下保存日志,这种方式会保存一周的日志。

五、生产实例之――利用logrotate进行nginx日志轮询

配置nginx

1、建立/etc/logrotate.d/nginx文件/etc/logrotate.d/nginx

2、写入如下内容:

/var/log/nginx/*log {

daily

rotate 10

missingok

notifempty

compress

sharedscripts

postrotate

[ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`

endscript

}

注释:

/var/log/nginx/*log:需要轮询日志路径

daily:每天轮询

rotate 10:保留最多10次滚动的日志

missingok:如果日志丢失,不报错继续滚动下一个日志

notifempty:当日志为空时不进行滚动

compress:旧日志默认用gzip压缩

/var/run/nginx.pid:nginx主进程pid

六、其他需要注意的问题1、尽管花括号的开头可以和其他文本放在同一行上,但是结尾的花括号必须单独成行。2、使用prerotate和postrotate选项

下面的例子是典型的脚本/etc/logrotate.d/syslog,这个脚本只是对/var/log/messages有效。

/var/log/messages

{

prerotate

/usr/bin/chattr -a /var/log/messages

endscript

postrotate

/usr/bin/kill -HUP syslogd

/usr/bin/chattr +a /var/log/messages

endscript

}

第一行指定脚本对/var/log messages有效

prerotate命令指定转储以前的动作/usr/bin/chattr -a去掉/var/log/messages文件的“只追加”属性endscript结束.

prostrotate部分的脚本指定转储后的动作:

/usr/bin/killall -HUP syslogd用来重新初始化系统日志守护程序syslogd

/usr/bin/chattr +a /var/log/messages重新为/var/log/messages文件指定“只追加”属性.

最后的endscript用于结束postrotate部分的脚本

3、logrotate的运行分为三步:

判断系统的日志文件,建立转储计划以及参数,通过cron daemon运行缺省的crontab来logrotate。

#/etc/cron.daily/logrotate

#! /bin/sh

/usr/sbin/logrotate /etc/logrotate.conf

4、/var/log/messages不能产生的原因:

这种情况很少见,但是如果你把/etc/services中的514/UDP端口关掉的话,这个文件就不能产生了。

否则如果不重启syslogd服务,日志默认不会记录到新生成的日志文件中,依然记录在原文件中。

所以轮换日志文件之后,重启syslogd服务是很重要的。

logrotate也可以直接执行后直接跟配置文件就可以了。

-v给出详细信息-d debug模式,不更改日志文件内容模拟执行-f强制执行,忽略所有规则

参考:

附件总结文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值