笔记 by 车东

多个服务器日志的排序合并: clfmerge

· 日志分析|AWStats

以前介绍过 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 的时候出现排序倒错的问题了。

更可靠的一个工具就是logtools中的:clfmerge,合并速度比较快,而且对于日志跨天也没有问题。

当然,还有一个思路:就是将在多台服务器上的日志实时udp发送到1台(或多台)集中的日志服务器上,这样就省略了排序合并的步骤。并且适合后台快速分发到其他服务器上进行统计。

💬 历史评论

以下 1 条评论从旧版 Movable Type 博客迁移而来。 原始评论时间:2002–2016 年。

woyo · 2007-03-31 14:44

为什么不是使用awstats自己的工具logresolvemerge.pl来合并日志呢?