我正在调查日志记录系统的问题,并寻找有关该问题的可能解决方案的一些输入。 我们现在拥有的:
我们有时遇到的问题是客户端套接字(log4j记录器)有时会无限期地等待,导致应用程序无响应。建议的解决方案之一是远离套接字appender并使用本地文件(我们不需要kibana中的“即时”日志信息)。因此,logstash代理将配置为从6个文件(每个实例一个)读取并直接将其推送到弹性搜索。除了在logstash的输入配置中定义了6个文件之外,你能否提出这种方法的任何缺点?您还可以提出哪些其他选择?提前谢谢。
答案 0 :(得分:1)
如果您可以选择这样做,我肯定不会使用SocketAppender。一个问题是你提到的问题和另一个问题,如果你在Logstash 1.5x或之前,我发现更麻烦的是,你的事件的确切时间戳(由log4j2创建)没有传达,这意味着时间戳日志行的日志行将是logstash中日志行的到达时间,而不是应用程序创建日志行的时间。如果您从堆栈中的不同应用程序/服务器/子系统聚合日志,那么了解事件的时间性将是一件麻烦事。但这是fixed in Logstash 2.0,但仍然值得一提。
除此之外,至少有三个很好的理由将日志存储到文件系统上的文件中,而不是直接通过TCP发送它们: