logback 故障转移 tcp appender

logback Failover tcp appender

我目前正在尝试使用 logback-logstash-encoder 将我的日志写入两个不同的 logstash 实例。这两个实例都将写入同一个 Elasticsearch 实例。

我正在努力寻找一种在两个 logstash 实例之间进行负载平衡的方法。

阅读 logback 文档和 log4j2 文档后,很明显 logback-logstash 使用的 TcpAppender 不支持 'load-balanced' url(即 url1、url2)。在 log4j2 中,我可以使用 FailoverAppender 近似此行为。

logback有没有类似的功能?或者我是否需要建立另一项服务来为 logback 进行负载平衡?

据我所知,TcpAppenders 不支持负载平衡。但是,您可以通过在 logstash 框前面添加一个 hardware/software 负载平衡器来实现负载平衡。如果 logstash process/box 死机,TCP 连接会重置,下一个日志事件应该会导致重新建立​​连接。

此方法需要在您的设置中添加负载平衡器。您将在 TcpAppender 中使用负载均衡器的地址。平衡器为您处理 logstash 的可用性。

这取决于你想达到什么目的。它不会丢失任何日志事件吗?那么也许更好的方法是将日志写入文件并通过 logstash-forwarder 将文件推送到您的 logstash 框。如果您担心连接超时和应用程序速度变慢,那么 async-appender 或使用 UDP 可能是您的选择。

HTH,马克