我正在寻找一种集中分布式软件(用Java编写)的日志记录问题的方法,这很容易,因为所讨论的系统只有一台服务器。但请记住,特定服务器的更多实例很可能在未来运行(并且需要更多应用程序),必须有类似Logging-Server的东西,处理传入的日志并使其可供支持团队访问。
现在的情况是,几个java应用程序使用log4j将其数据写入本地文件,因此如果客户端遇到问题,支持团队必须要求提供日志,这并不总是容易的并且需要很多时间。在服务器故障的情况下,诊断问题并不大,因为无论如何都存在远程访问,但即使通过Logging-Server监控所有内容仍然很有意义。
当我查看有关“集中式日志记录”的问题时,我发现了另一个Question(实际上是唯一一个带有(在这种情况下)可用答案的问题。问题是,所有应用程序都在一个封闭的环境中运行一个网络)和安全指南不允许任何有关内部软件的事情走出环境网络。
我还发现了一篇关于如何implement这样的Logging-Server的精彩文章。由于这篇文章写于2001年,我原本以为有人可能已经解决了这个特殊问题。但是我的搜索结果没有任何结果。
我的问题:是否有一个日志框架,可以通过支持团队访问的集中式服务器来处理网络登录?
规格:
没有必要,但很高兴有
我最糟糕的情况是他们不是那样的软件。对于这种情况,我们可能会自己实现。但是如果有这样的客户端 - 服务器应用程序,我非常感谢不需要做这个特别有问题的工作。
提前致谢
更新:解决方案必须在几个支持java的平台上运行。 (主要是Windows,Linux,一些HP Unix)
更新:经过更多的研究,我们实际上找到了一个我们能够获得的解决方案。 clusterlog.net(至少从2015年中期起离线)为分布式软件提供日志服务,并与log4j和logback兼容(与slf4j兼容)。它允许我们通过应用程序分析每个用户的方式。因此,很容易重现报告的错误(甚至是未报告的错误)。它还通过电子邮件通知我们重要事件,并且报告系统将相同来源的日志汇总为易于访问的格式。他们在几天前就已经部署了(这是完美无瑕的)并且运行良好。
更新(2016):这个问题仍然有很多流量,但我提到的网站已经不存在了。
答案 0 :(得分:6)
您可以将Log4j与SocketAppender一起使用,因此您必须将服务器部分编写为LogEvent处理。 见http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/net/SocketAppender.html
答案 1 :(得分:4)
NXLOG 或 LogStash 或 Graylogs2
或
LogStash + ElasticSearch(+可选Kibana)
示例:
1)http://logstash.net/docs/1.3.3/tutorials/getting-started-simple
2)http://logstash.net/docs/1.3.3/tutorials/getting-started-centralized
答案 2 :(得分:3)
查看logFaces,看起来符合您的规范。 http://www.moonlit-software.com/
答案 3 :(得分:3)
来自Facebook的一个现成的解决方案 - Scribe - 正在使用Apache Hadoop。但是,我所知道的大多数公司仍然倾向于为此开发内部系统。我在一家这样的公司工作过,大约两年前在那里处理过原木。我们还使用了Hadoop。在我们的例子中,我们进行了以下设置:
我们感兴趣的报告很少且数量固定。在极少数情况下,当我们想要执行不同类型的分析时,我们只需为其添加一个专门的reducer代码,并可选择针对旧日志运行它。 / p>
如果您无法事先确定您感兴趣的分析类型,那么最好将工作人员准备的结构化数据存储在HBase或其他NoSQL数据库(here, for example, people use Mongo DB)中。这样,您就不需要重新聚合原始日志中的数据,而是可以查询数据存储区。
有很多关于此类日志记录聚合解决方案的好文章,例如using Pig to query the aggregated data。 Pig允许您使用类似SQL的查询来查询基于Hadoop的大型数据集。