如何每小时从多台机器聚合新的Apache日志行?

我build立了一个系统,需要每小时从四台机器上收集新的apache日志,合并它们,处理它们并存储它们。 对于收集新日志的任务,我已经写了一堆cron脚本,读取已经发送的行的行并开始只发送新的行,然后存储新的行号。 这与使用一些.lock文件的合并脚本同步。

虽然这工作得很好,但我想用一个更可靠的系统来替代这个系统,它具有良好的error handling能力,并且可能会自动检测新的日志文件(它们每天都在轮换)。 有什么我可以用来做这种任务吗? 谢谢!

有许多收集/监视日志的解决scheme。

其中一些:syslog,syslog-ng,logsurfer,splunk …我想的更多。 但是我会推荐syslog-ng。

这是非常可configuration的(例如,他可以存储日志数据库有时是非常有用的),有弹性,做你想做的。

使用syslog-ng和MongoDB,您可以使用mojology(一个简单的应用程序来浏览syslog-nglogging的存储在MongoDB中的系统日志消息)制作相当有趣的东西。

你可以使用任何这个软件。

Zabbix可以收集日志,但configuration你想要的更难。

系统日志不是坏主意,但sysylog-ng有更多的function。 以下是syslog和syslog-ng的比较http://www.balabit.com/network-security/syslog-ng/opensource-logging-system/features/comparison

所以我会selectsyslog-ng 🙂

我认为使用系统日志服务器是个好主意。 您可以将所有日志发送到该服务器,然后处理它们。 系统日志还使您可以定义filter并为logging的信息添加多个目的地。

我不确定系统日志是否真的是用于Apache日志的正确工具。

在四个Web服务器上,我只需每小时旋转一次日志。

然后,从中央日志服务器,我会使用rsync获取所有日志,并在一个中心位置执行所有“智能”的东西(合并日志等)。

德米特里·科特罗夫(Dmitry Koterov)写了一个很好的工具来聚合networking服务器日志。 它是专门为克服系统日志解决scheme的一些缺陷而devise的。 见http://en.dklab.ru/lib/dklab_logreplica/

另一个好方法是使用日志pipe理软件,如splunk或logstash。