Filebeat与Java日志appenders

我们将开始在AWS elasticbeanstalk上使用docker部署我们的Java应用程序,我们希望集中logging并使用ELK堆栈。

我想每个容器保留一个进程,因此避免使用filebeat,但为了做到这一点,我们将不得不使用不同的appender,如syslog甚至tcp appender。

我们不能承受损失的日志。

Filebeat提供了开箱即用的重试逻辑,但是将其引入到混音中会增加部署的复杂性,需要确保filebeat在容器终止时收到SIGTERM,确保它已经预先装入容器映像或Dockerfile中,等等。

如果我们使用tcp或s​​yslog appender进入path,重审就取决于我们,我们也希望避免代码的复杂性。

除了我所指出的之外,每种方法的优缺点是什么?

我们的日志库是logback。

我有和你一样的担忧。 最安全的方式是本地文件(假设你有足够的空间)。 因为保证其他进程或networking端点的可用性要困难得多。

在Logback邮件列表中查看: orig / MarkLogic镜像 / Nabble镜像特别是重播:

如果你确定要logging日志,那么logging失败就意味着应该重试交易,那么logging回来不是API的正确select。

https://github.com/internetitem/logback-elasticsearch-appender项目直接向高可用ElastichSearch集群提供appender,如果所有节点都closures,则将日志事件caching到内存中。

另一种方法是写入高可用性中间件以进行caching和交付保证。 像卡夫卡,雷迪斯等