首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从tomcat集群传送日志

从tomcat集群传送日志
EN

Stack Overflow用户
提问于 2015-10-15 03:34:07
回答 1查看 135关注 0票数 1

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-15 03:51:02

如果您有选择的话,我肯定不会使用SocketAppender。其中一个问题是您提到的问题,另一个问题是如果您在Logstash1.5x或以前(我发现更麻烦得多),就是没有传递事件的确切时间戳(如log4j2所创建的),这意味着日志行的时间戳将是日志存储中日志行的到达时间,而不是应用程序创建日志行的时间。如果您正在聚合来自堆栈中不同应用程序/服务器/子系统的日志,那么了解事件的时间性将是一个麻烦。虽然这是修正了Logstash 2.0,但还是值得一提的。

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

  1. 您的日志文件实际上是日志事件的备份,也就是说,您可以随时重放这些文件。
  2. 您的应用程序不依赖于另一个同步子系统来发送它的日志行,它只是在它自己的文件系统中将它们下沉。
  3. 您的日志可以下降(升级,网络连接等),您的应用程序仍将能够生成日志,无论在链上发生了什么。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33139414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档