gpt4 book ai didi

java - 管理分布在多台机器上的大量日志文件

转载 作者:搜寻专家 更新时间:2023-10-31 19:58:35 25 4
gpt4 key购买 nike

我们已经开始使用帮助我们进行分布式计算的第三方平台 (GigaSpaces)。我们现在试图解决的主要问题之一是如何在这个分布式环境中管理我们的日志文件。我们目前有以下设置。

我们的平台分布在 8 台机器上。在每台机器上,我们有 12-15 个进程使用 java.util.logging 记录到单独的日志文件。在这个平台之上,我们有自己的应用程序,它们使用 log4j 和日志来分隔文件。我们还将 stdout 重定向到一个单独的文件以捕获线程转储和类似内容。

这会产生大约 200 个不同的日志文件。

截至目前,我们没有工具来协助管理这些文件。在以下情况下,这会让我们非常头疼。

  • 当我们事先不知道问题发生在哪个过程中时进行故障排除。在这种情况下,我们目前使用 ssh 登录每台机器并开始使用 grep

  • 尝试通过定期检查日志中是否有任何异常情况来积极主动。在这种情况下,我们目前还登录到所有机器并使用 lesstail 查看不同的日志。

  • 设置警报。我们希望对超过阈值的事件设置警报。要检查 200 个日志文件,这看起来很痛苦。

今天我们每秒只有大约 5 个日志事件,但随着我们将越来越多的代码迁移到新平台,这个数字将会增加。

我想向社区提出以下问题。

  • 您如何处理许多日志文件分布在通过不同框架记录的多台机器上的类似案例?
  • 您为什么选择那个特定的解决方案?
  • 您的解决方案效果如何?您觉得什么好,什么不好?

非常感谢。

更新

我们最终评估了 Splunk 的试用版。我们对它的工作方式非常满意,并决定购买它。易于设置、快速搜索和大量适合技术爱好者的功能。我可以推荐处于类似情况的任何人检查一下。

最佳答案

我建议将所有 Java 日志记录通过管道传输到 Simple Logging Facade for Java (SLF4J) 然后将所有日志从 SLF4J 重定向到 LogBack . SLF4J 特别支持处理所有流行的遗留 API(log4j、commons-logging、java.util.logging 等),参见 here .

一旦您在 LogBack 中有了日志,您就可以使用它的许多附加程序之一来聚合多台机器上的日志,有关详细信息,请参阅手册 section about appenders . Socket、JMS 和 SMTP 似乎是最明显的候选对象。

LogBack 还内置支持监视日志文件中的特殊条件和发送到特定附加程序的过滤事件。因此,您可以将 SMTP appender 设置为每次在日志中出现 ERROR 级别事件时向您发送电子邮件。

最后,为了简化故障排除,请务必为所有传入的“请求”添加某种requestID,请参阅我对this question 的回答。了解详情。

编辑:您还可以实现自己的自定义 LogBack appender 并将所有日志重定向到 Scribe .

关于java - 管理分布在多台机器上的大量日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4014794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com