集中Java记录(Centralised Java Logging)

2019-06-25 14:30发布

我正在寻找一种方法来集中分布式软件(用Java编写的),这将是很容易的,因为有问题的系统中只有一个服务器的日志记录的担忧。 但是记住,这是极有可能的是,特定服务器的多个实例将在未来的运行(也有将是更多的应用程序的需要为这个),就必须像一个记录的服务器,其负责传入日志,使它们accessable的支持团队。

这种情况现在的问题是,有几个Java的应用程序使用log4j的,它的数据写入到本地文件,因此,如果客户expiriences问题的支持团队有权要求在记录,这并不总是容易,需要花费大量的时间。 在的情况下,服务器故障诊断,问题并不大,因为是远程接入反正,但即便如此,通过记录的服务器监控一切仍然会做出很大的意义。

虽然我通过问题就关于“集中记录”我发现了另一个问题 (实际上是唯一一家拥有(在这种情况下)可用的答案。问题是,所有的应用程序都在一个封闭的环境中运行(在一个网络内)和安全准则不允许对有关内部软件走出去的环境中网络的任何东西。

我还发现约一将如何精彩文章实现这样的日志记录的服务器。 由于文章写于2001年,我还以为是有人可能已经解决了这个特殊的问题。 但我的搜索结果与一无所获。

我的问题 :是否有记录,框架,手柄的日志在一个中央服务器的网络可以通过支持团队来访问?

规格:

  • 可用性
  • 服务器必须由我们来运行。
  • Java 1.5的兼容性
  • 相容性的异构网络。
  • 最好的情况:协议使用HTTP发送日志(以避免防火墙的问题)
  • 最好的情况:使用实现SLF4J log4j的或的logback或基本上什么

没有必要的,但最好有

  • 身份验证和安全性当然是一个问题,但可以重新设置至少一段时间(如果是开放式的软件,我们将它推广到我们的需求OT:我们总是回馈项目 )。
  • 数据挖掘和分析的东西是使软件更好非常有帮助,但可能也有外部应用程序。

我最糟糕的情况是,他们就是这样没有软件。 对于这种情况,我们可能会实现这个自己。 但是,如果有这样的客户端 - 服务器应用程序我将非常感谢不需要做工作的这个问题尤其严重位。

提前致谢

更新:该解决方案有几个支持java的平台上运行。 (大部分的Windows,Linux,一些HP UNIX)

更新:经过大量更多的研究,我们居然找到了一个解决方案,我们能够获得。 clusterlog.net (离线自至少2015年中期),用于分布式软件提供日志服务,并且是Log4j和的logback(这是SLF4J兼容)兼容。 它让我们分析每一个用户的方式,通过该应用程序。 因此使得它非常容易重现报告的错误(甚至不报的)。 它也通知我们通过电子邮件重要事件,并有报告制度是在同一个起源的日志summorized成易于accessable格式。 他们部署(这是完美无瑕),在这里只是前两天,它是运行很好。

更新(2016):这个问题仍然得到大量的流量,但我提到的网站不存在了。

Answer 1:

您可以使用Log4j与SocketAppender,因此你必须写服务器一部分的LogEvent处理。 看到http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/net/SocketAppender.html



Answer 2:

NXLOGLogStashGraylogs2

要么

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



Answer 3:

看看logFaces,看起来像您的要求得到满足。 http://www.moonlit-software.com/

  • 可用性(检查)
  • 服务器必须由我们来运行。 (校验)
  • Java 1.5的兼容性(检查)
  • 相容性的异构网络。 (校验)
  • 最好的情况:协议使用HTTP发送日志(以避免防火墙的问题)(几乎TCP / UDP)
  • 最好的情况:使用实现SLF4J(检查)的log4j的logback或基本上还是什么
  • 验证(检查)
  • 数据挖掘和分析(可能通过扩展API)


Answer 4:

有来自Facebook的即用的解决方案- 抄写 -这是引擎盖下使用Apache的Hadoop。 然而,大多数公司我所知道的仍倾向于开发内部系统这一点。 我曾在一家这样的公司,有大约两年前处理日志。 我们还使用了Hadoop的。 在我们的例子中,我们有如下设置:

  • 我们有机器的日志聚合的小型专用集群。
  • 开采工人从生产服务日志,然后分析各条线。
  • 然后减速会集结必要的数据和准备报告。

我们有一个小而固定的数量,我们感兴趣的报告。在极少数情况下,当我们要进行不同的分析,我们可以简单地增加一个专门的减速器代码为和可选运行对旧日志。

如果你不能决定什么样的分析你提前兴趣那么你将会更好地存储在HBase的或一些其他的NoSQL数据库(工人准备结构化的数据在这里,例如,人们用蒙戈DB )。 这样,你就不必从原木重新汇总数据,并能够查询数据存储来代替。

有许多关于这些日志聚合解决方案,例如好文章, 用猪来查询汇总数据 。 猪可以让你查询类似于SQL的查询大量基于Hadoop的数据集。



文章来源: Centralised Java Logging