多服务器的日志合并统计(4)
比如我要保留前1周的日志:每天复制前1天的日志到指定目录,等待日志服务器来抓取:
/bin/cp /path/to/logs/`date -v-1d +%w`/access_log
/path/to/sync/logs/access_yesterday
在FREEBSD上使用以下命令:
date -v-1d +%w
注释:
-v-1d: 前1天,而在LINUX上这个选项应该是date -d yesterday
+%w: weekday,由于使用的都是标准时间函数库,所有工具中的WEEKDAY定义都是一样的0-6 =>周日-周六
注意:写到CRONTAB里的时候"%"前面需要加一个""转义:每天0点5分进行一次日志归档:
5 0 * * * /bin/cp /path/to/logs/`date -v-1d +\%w`/access_log
/path/to/for_sync/logs/access_yesterday
首次开始cronolog日志统计是周3,一周以后日志又将轮循回3/access_log。
但这次日志是追加到access_log还是重新创建一个文件呢?>>access_log or >access_log?
我测试的结果是日志将被追加:
[01/Apr/2002:23:59:59 +0800]
[01/Apr/2002:23:59:59 +0800]
[08/Apr/2002:00:00:00 +0800]
[08/Apr/2002:00:00:00 +0800]
肯定是不希望每次日志还带着上周的数据的并重复统计一次的(虽然对结果没影响),而且这样%w/下的日志不是也日益增多了吗?
解决方法1 把每天的cp改成mv
解决方法2 每天复制完成后:删除6天以前的access_log日志
find /path/to/apache/logs -name access_log -mtime +6 -exec rm -f {};
多保留几天的日志还是有必要的:万一日志分析服务器坏了一天呢?
4、总结
1) 用 cronolog 干净,安全地轮循日志
2) 用 sort -m 排序合并多个日志
/bin/cp /path/to/logs/`date -v-1d +%w`/access_log
/path/to/sync/logs/access_yesterday
在FREEBSD上使用以下命令:
date -v-1d +%w
注释:
-v-1d: 前1天,而在LINUX上这个选项应该是date -d yesterday
+%w: weekday,由于使用的都是标准时间函数库,所有工具中的WEEKDAY定义都是一样的0-6 =>周日-周六
注意:写到CRONTAB里的时候"%"前面需要加一个""转义:每天0点5分进行一次日志归档:
5 0 * * * /bin/cp /path/to/logs/`date -v-1d +\%w`/access_log
/path/to/for_sync/logs/access_yesterday
首次开始cronolog日志统计是周3,一周以后日志又将轮循回3/access_log。
但这次日志是追加到access_log还是重新创建一个文件呢?>>access_log or >access_log?
我测试的结果是日志将被追加:
[01/Apr/2002:23:59:59 +0800]
[01/Apr/2002:23:59:59 +0800]
[08/Apr/2002:00:00:00 +0800]
[08/Apr/2002:00:00:00 +0800]
肯定是不希望每次日志还带着上周的数据的并重复统计一次的(虽然对结果没影响),而且这样%w/下的日志不是也日益增多了吗?
解决方法1 把每天的cp改成mv
解决方法2 每天复制完成后:删除6天以前的access_log日志
find /path/to/apache/logs -name access_log -mtime +6 -exec rm -f {};
多保留几天的日志还是有必要的:万一日志分析服务器坏了一天呢?
4、总结
1) 用 cronolog 干净,安全地轮循日志
2) 用 sort -m 排序合并多个日志
顶(0)
踩(0)
上一篇:10分钟分析Web服务器
下一篇:多服务器的日志合并统计(1)
- 最新评论