15

我需要在 AWS S3(或任何其他可以在此处提供帮助的 AWS 服务)中创建一个日志文件。AFAIU 无法在 S3 中的现有日志文件中附加一行。这意味着我需要在每次收到新消息时检索并重新发送整个日志,或者我需要为每条消息创建一个新对象。检索数据时,后一个选项很复杂。

我有很多日志消息,重要的是不要丢失它们,因此不能将它们缓冲在我的服务器内存中并偶尔发送到 S3。

哪种 AWS 服务是我最好的选择(在节省成本方面也是如此)。

4

5 回答 5

19

您正在寻找的东西称为 EBS(弹性块存储)。

您可以将 EBS 驱动器连接到任何服务器,并在那里开始记录。如果您的服务器死机,EBS 磁盘仍然存在,您可以稍后查看数据。

更好的是,只需创建一个中央系统日志服务器(带有 EBS 驱动器),然后让您的所有(无状态)应用程序服务器将它们的日志发送到那里。

当您的 EBS 驱动器填满时,将日/周/等存档到 S3 日志中。这使您可以在 S3 中存储相当大的文件(如果需要,甚至可以进行压缩)。

于 2013-07-01T02:55:51.427 回答
6

AWS SimpleDB 会做你想做的事:

http://aws.amazon.com/simpledb/usecases_logging/

由于 Amazon SimpleDB 允许您完全卸载运行生产数据库所需的工作,因此许多开发人员发现它是理想的低接触数据存储,用于记录有关条件或事件、状态更新、重复活动、工作流程或设备和应用程序的信息状态。Amazon SimpleDB 让您可以经济高效地“设置并忘记”这些数据日志并将它们用于多种目的,例如:

监控或跟踪业务分析的计量趋势审计档案或法规遵从性应用示例包括:

集中存储服务器日志以减少它们在每台运行的服务器上消耗的空间 记录操作指标或正在进行的性能测试的结果以供以后分析 审核应用程序或联网设备的访问条目或配置更改 捕获和监控环境条件(温度、压力水平、湿度等)在不同的位置和针对特定条件的编程警报 记录和跟踪有关工作流中活动的对象或进程状态的地理位置信息 Amazon SimpleDB 的多个属性使其成为数据日志的有吸引力的数据存储:

中央,具有高可用性——如果您的数据日志以前被本地捕获在多个设备/对象、应用程序或流程孤岛中,您将享受能够在云中的一个位置集中访问您的数据的好处。更重要的是,Amazon SimpleDB 会自动以异地冗余方式复制您的数据,以确保高可用性。这意味着,与集中式本地解决方案不同,您不会使用 Amazon SimpleDB 创建单点故障,并且您的数据将在您需要时出现。所有数据都可以通过一个解决方案通过 Web 服务请求存储,然后由任何设备访问。零管理——您使用简单的 Web 服务请求存储数据项,其余的由 Amazon Web Services 负责。

经济高效 – Amazon SimpleDB 以低廉的价格存储和查询您的数据日志。由于您只为所消耗的资源付费,因此您无需自己进行容量规划或担心数据库负载。该服务只是响应请求量的来来去去,只对实际消耗的资源收费。了解有关 Amazon Si 的更多信息

于 2013-06-30T19:20:17.827 回答
3

您正在寻找的东西可以通过 S3 实现。S3 不需要拥有完整的文件即可开始存储数据。您可以使用分段上传一次存储块(5mb 块)。完成后,比如说一天的运行,您可以发送最后一个块并关闭分段上传。并在第二天开始记录。

S3 允许多达 10,000 个零件。因此,通过选择 5MiB 的部分大小,您将能够上传高达 50GiB 的动态文件。对于大多数用例来说应该足够了。

启动 S3 分段上传。将数据收集到缓冲区中,直到该缓冲区达到 S3 的块大小下限 (5MB)。在建立缓冲区时生成 MD5 校验和。将该缓冲区作为 Part 上传,存储 ETag。达到数据的 EOF 后,上传最后一个块(可以小于 5MiB)。完成分段上传。

这是一种更好的解决方案,因为它不会花费您和 EC2 实例或 EBS 存储成本。

于 2017-11-30T18:18:58.483 回答
0

最简单的方法是记录到磁盘,然后按适合您的时间间隔轮换和发送日志。

如果您是现场实例或实例支持的实例,这可能会变得更加复杂。

于 2013-06-30T18:46:29.627 回答
0

AWS 目前没有很好的日志记录解决方案,但市场上还有一些其他的云服务可以收集和组织日志,包括papertrailapp.comloggly.com

于 2013-06-30T19:41:30.743 回答