我们有30多个apache httpd服务器,并且正在寻求对历史趋势和接近“实时”监视/警报的日志执行分析。 我主要关心错误率(4xx / 5xx),响应时间,整体请求率等,但是也可以推出更多的计算密集型统计信息,如每个单元的唯一客户端IP和用户代理时间。
我倾向于将其作为集中式收集器/服务器/存储设备来构build,同时也考虑将非apache日志(即常规syslog,防火墙日志等)存储在同一个系统中的可能性。
显然这其中很大一部分可能是自定义的(至less是片断之间的连接和我们所做的parsing/分析之间的联系),但是我至less没有能够find有关这样做的人的很多信息,至less在小于Google / Facebook /等的商店。 谁可以把他们的日志数据放到一个百个节点的计算集群中,然后运行Map / Reduce。
我正在寻找的主要事情是:
任何build议/指针/想法,要么是“产品”/项目或其他人如何做这些描述将是非常有帮助的。 不幸的是,我们并不完全是一个新兴的开发商店,很多旧的东西,同质化的基础设施和紧张的盒子。
rsyslog可以很好地工作,如果您尝试logging的数据量足够小,您甚至可以使用免费版本的Splunk 。 完整的版本可能是一个更全面的解决scheme,可能符合你想要完成的任务,节省你开发自己的内部监控工具的时间。
在我的工作中,尽pipe我们只是坚持syslogd,Nagios和Ganglia来满足我们所有的监控需求,即使有600台左右的机器,他们也都非常稳定。
Jason,您提到了使用Ganglia来监控Apache Web服务器的兴趣。 你有没有考虑用Ganglia使用mod-sflow?
使用Ganglia监视网站农场
MOD的sFlow
最近,已添加活动,闲置,最大员工指标。 虽然Ganglia非常适合趋势群集指标,但您需要使用日志分析器来报告详细的日志数据。 mod-sflow通过UDP将计数器和日志数据发送为二进制XDR编码结构。 您可以使用sflowtool将二进制数据转换为标准ASCII日志,或者作为您自己的分析工具的基础。
如果你想build立一个通用的系统日志服务器,我肯定会推荐你看看rsyslog,这是一个非常强大的现代系统日志实现。 我喜欢的一件事情是,它可以login到关系数据库而不是平面文件,这使得数据处理变得更容易。
我从来没有使用Apache的syslog,所以我不能帮助你的问题的不幸的部分。
你可以试试LogZilla 。 它是99%的开源(一个文件不是)。 与本课程的其他解决scheme相比,它非常快速且便宜。
这并不是一般的解决scheme,但是从伦敦PHP会议回想起来,BBC表示他们有一种狡猾的方式来实时将apache日志文件从多台服务器传输到中央服务器,认为他们绰号传送。
我不记得确切的细节,但jist是他们有一个小的自动重新启动脚本运行在每个Apache服务器,基本上打开名为/ var / log / apache2 / access_log命名pipe道,并使用netcat复制它到日志服务器上唯一的tcp端口。 然后日志服务器再次将其捕获到/ var / log / myApacheServer / access_log中。
小心,这种方法也适用于一般的系统日志文件,虽然系统启动时可能需要初始同步。
如果你确定半实时,那么我会select一个更简单的方法来每隔n分钟轮换一次日志文件,然后把它们在[postrotate]中同步到中央服务器。
许多webstats软件包,比如awstats和朋友,都假定日志文件是sorting的,所以像awstats的logresolvemerge.pl这样的东西在logServer:/ var / log / * / access_log上可能是一个有用的预处理器,结果。
Cacti会使用rrdtool来绘制你想要的graphics,但是你需要从webstats内部数据文件中提取数据,这对我的口味来说是非结构化的。
这种方法是可以编写脚本的,但是在大量的虚拟主机上开始变得单调乏味,因为你得到了一个虚拟主机* serverCount数量的TCP数据stream。
这是所有文件系统的基础,虽然在今天的世界有点低科技,对不起。