登录Amazon S3

17

有没有人构建过或知道如何构建一个日志框架,使其将日志文件存储在亚马逊 S3 上?

我们正在构建一款 SaaS 应用程序,自然而然,我们计划拥有无数的服务器和客户。我想简化整个日志结构。目前我们使用 SLF4j 进行日志记录,并使用 Logback 作为实际的日志记录实现。

我考虑我们可以添加另一个实现,该实现会在内存中累积日志消息,将其压缩,然后将其上传到 S3。如果 S3 连接断开或变慢,该实现将在磁盘上排队等待文件。有点像 Facebook 的 Scribe。

我的猜测是,写和测试这个实现可能需要我四到五天的时间。如果已经有其他实现,我很想了解一下。

5个回答

9

有一个适用于Fluentd的插件,可将文件存储到S3中。 (Fluentd是一款不错的“日志文件收集器”)

在此处了解更多信息: https://docs.fluentd.org/output/s3

如果S3连接断开或速度变慢,它会为您缓冲输出。


2
你可以尝试编写一个自定义的appender,并在相应的配置中使用logbacklog4j2中的这个appender

这样,你不需要编写整个日志框架,而只需编写你需要的部分,并从工作框架中使用其余部分。

在Github上也有一些这样的项目。例如:shuwada/logback-s3


0

您可以登录Datadog,然后配置日志归档。例如,您可以让容器将日志输出为JSON格式,并让Datadog代理或fluentd/fluentbit将这些日志转发到Datadog。Datadog会自动解析和索引日志以进行快速搜索。如果编写自己的解析规则,不同的日志格式也可以使用。在保留期结束时,如果设置了日志归档,它将自动将其上传到S3。

缺点是被锁定在Datadog中并且价格较高。优点是您可以轻松地将日志重新注入Datadog以进行快速搜索,而无需担心维护自托管解决方案。

如果您想要一个开源替代方案,可以尝试Loki。它具有S3存储后端。


0

我在谷歌上搜索了同样的问题,但显然我比较幸运。

我知道如何记录到S3。没有现成的解决方案。

我建议使用类似于s3的fuse来挂载您的syslog:https://github.com/s3fs-fuse/s3fs-fuse

现在,您只需要在日志解析器系统中也将其挂载,这可以是任何可以从目录读取日志的现成系统。

这就是我想出来的。

在实施之前,我仍在寻找的是这种记录到S3的性能问题,因为AWS有自己的问题。有关设置块/文件大小以提高性能并降低读/写成本的讨论。

希望它能帮助其他迷失的灵魂。


1
请注意Graylog2,syslog已经可以在磁盘上排队。最新版本的Graylog2不会使用太多的mongoDB。从它开始并自己编写一个简单的任务来压缩并从您的graylog服务器上传到S3将非常有用。 - Abhishek Dujari

0

我在寻找类似的东西。 我已经在使用winston.js进行日志记录,但我发现这个插件可以让你将日志保存到AWS S3。(Winston-S3) 我还没有尝试过,但很快就会尝试。

在某些管理页面中展示这些日志不应该太困难。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接