以前介绍过 sort -m <(/bin/zcat /web1/access_log.20070120.gz) <(/bin/zcat /web2/access_log.20070120.gz) 对多台服务器上的日志进行排序合并,但是最近发现有时候cronolog截取日志并不干净,就是说按天截断的时候,还是有可能出现几条跨天的日志记录。March 31 => April 1时候日志排序倒错的可能性还是存在的。
最近才知道知道sort 还有-M模式,是可以对有英文月份的字段进行排序的:
-M An initial string, consisting of any amount of white space, fol-
lowed by three letters abbreviating a month name, is folded to
UPPER case and compared in the order `JAN' < `FEB' < ... <
`DEC.' Invalid names compare low to valid names.
这样就不会在 March => April 的时候出现排序倒错的问题了。
当然,还有一个思路:就是将在多台服务器上的日志实时udp发送到1台(或多台)集中的日志服务器上,这样就省略了排序合并的步骤。并且适合后台快速分发到其他服务器上进行统计。
作者:车东 发表于:2007-01-22 17:01 最后更新于:2007-08-22 16:08版权声明:可以转载,转载时请务必以超链接形式标明文章 多个服务器日志的排序合并: clfmerge 的原始出处和作者信息及本版权声明。
http://www.chedong.com/blog/archives/001280.html
Comments
为什么不是使用awstats自己的工具logresolvemerge.pl来合并日志呢?
由: woyo 发表于 2007年03月31日 下午02时44分