gpt4 book ai didi

elasticsearch - 来自 tomcat 集群的日志传送

转载 作者:IT王子 更新时间:2023-10-29 06:14:30 25 4
gpt4 key购买 nike

我正在调查日志系统的问题,并寻找有关该问题的可能解决方案的一些输入。我们现在拥有的:

  • 6 个 tomcat 集群,日志记录 (log4j2) 配置为使用 SocketAppender
  • 这些的监听器是将记录的事件放在 Redis 上的 logstash 代理
  • 另一个 logstash 代理从 Redis 中挑选条目并将它们推送到 elasticsearch

我们有时遇到的问题是客户端套接字(log4j 记录器)有时会无限期地等待,从而导致应用程序变得无响应。建议的解决方案之一是摆脱套接字附加程序并使用本地文件(我们不需要 kibana 中的“即时”日志信息)。因此,logstash 代理将被配置为从 6 个文件(每个实例一个)中读取并将它们直接推送到 Elasticsearch 中。除了在 logstash 的输入配置中定义了 6 个文件之外,您能否提出这种方法的任何缺点?您还能建议哪些其他选择?提前致谢。

最佳答案

如果您可以选择,我绝对不会使用 SocketAppender。一个问题是你提到的那个问题,另一个问题是你使用的是 Logstash 1.5x 或更早版本,我发现这更麻烦,是你的事件的确切时间戳(由 log4j2 创建)没有传达,这意味着时间戳您的日志行的到达时间将是该日志行在 logstash 中的到达时间,而不是您的应用程序创建日志行的时间。如果您在堆栈中聚合来自不同应用程序/服务器/子系统的日志,那么理解事件的临时性将是一件麻烦事。这是 fixed in Logstash 2.0 ,虽然,但还是值得一提。

除此之外,至少有三个很好的理由将日志存储到文件系统的文件中而不是直接通过 TCP 传输它们:

  1. 您的日志文件实际上是您日志事件的备份,即您可以随时重放这些文件
  2. 您的应用程序不依赖于另一个同步子系统来发送其日志行,它只是将它们接收到自己的文件系统中
  3. 您的 logstash 可能会出现故障(升级、网络连接等),但您的应用程序仍然能够生成日志,无论链下发生了什么。

关于elasticsearch - 来自 tomcat 集群的日志传送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33139414/

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