我需要在AWS S3(或任何其他可以提供帮助的AWS服务)中创建日志文件。 AFAIU无法在S3中的现有日志文件中附加一行。这意味着每次新消息到来时我都需要检索并重新发送整个日志,或者我需要为每条消息创建一个新对象。检索数据时,后一种选择很复杂。
我有很多日志消息,重要的是不要丢失它们,因此不能选择在服务器内存中缓冲它们并偶尔发送给S3。
哪种AWS服务是我的最佳选择(也就节省成本而言)。
答案 0 :(得分:19)
您要找的是EBS(Elastic Block Store)。
您可以将EBS驱动器连接到任何服务器,然后开始记录。如果您的服务器死机,EBS磁盘仍然存在,您可以稍后查看数据。
更好的是,只需创建一个中央系统日志服务器(带有EBS驱动器),并让所有(无状态)应用服务器在那里发送日志。
当您的EBS驱动器填满时,将日/周/等存档到S3日志中。这使您可以在S3中存储相当大的文件(如果需要,甚至可以进行压缩)。
答案 1 :(得分:6)
AWS SimpleDB可以满足您的需求:
http://aws.amazon.com/simpledb/usecases_logging/
由于Amazon SimpleDB允许您完全卸载工作 需要运行生产数据库,许多开发人员发现它 理想的低触摸数据存储,用于记录有关条件的信息 或事件,状态更新,重复活动,工作流程, 或设备和应用程序状态。 Amazon SimpleDB可以帮助您 经济有效地“设置并忘记”这些数据日志并将其用于 多种用途,例如:
监控或跟踪计量业务分析审计趋势 存档或法规遵从性应用示例包括:
集中存储服务器日志以减少它们在每个日志上消耗的空间 运行服务器记录运营指标或正在进行的结果 用于以后分析的性能测试审计访问条目或 应用程序或联网设备的配置更改捕获 和监测环境条件(温度,压力水平, 湿度等)在不同的位置和编程警报 特定条件记录和跟踪地理定位信息 关于工作流中的活动的对象或进程状态 Amazon SimpleDB的属性使其成为具有吸引力的数据存储 数据日志:
具有高可用性的中央 - 如果您的数据日志是先前的 被困在多个设备/对象,应用程序或 过程孤岛,你将享受到能够访问你的好处 数据集中在云中的一个位置。更重要的是,Amazon SimpleDB 自动和地理冗余地复制您的数据以确保高 可用性。这意味着与集中式内部部署不同 解决方案,您不会在亚马逊上创建单点故障 SimpleDB,您的数据将在您需要时存在。全部 数据可以通过一个解决方案和Web服务请求存储 然后由任何设备访问。零管理 - 您存储数据 具有简单Web服务请求和Amazon Web Services的项目 照顾其余的。设置它并忘记它的服务意义的本质 你没有花时间在数据库管理上存储和存储 维护数据日志。
经济高效 - Amazon SimpleDB收取便宜的价格存储 并查询您的数据日志。因为你付钱的只是为了你 您消耗的资源,您不需要自己进行容量规划 或担心数据库负载。该服务只是响应请求 音量来来去去,只为实际收费 消耗的资源。要了解有关Amazon Si的更多信息
答案 2 :(得分:3)
S3可以满足您的需求。 S3不需要有完整的文件来开始存储数据。您可以使用分段上传一次存储块(5mb块)。完成后,比如说一天运行,您可以发送最后一个块并关闭分段上传。并在第二天开始记录。
S3允许最多10,000个零件。因此,通过选择5MiB的零件尺寸,您将能够上传最高50GiB的动态文件。对于大多数用例来说应该足够了。
启动S3分段上传。 将数据收集到缓冲区,直到该缓冲区达到S3的较低块大小限制(5MB)。在构建缓冲区时生成MD5校验和。 将该缓冲区上传为Part,存储ETag。 达到数据的EOF后,上传最后一个块(可能小于5MiB)。 完成分段上传。
这是一种更好的解决方案,因为它不会花费您和EC2实例或EBS存储成本。
答案 3 :(得分:1)
AWS目前没有一个很好的解决方案用于日志记录,但市场上还有一些其他云服务,用于收集和组织日志,包括papertrailapp.com和loggly.com。
答案 4 :(得分:0)
最简单的方法是登录磁盘,然后按照适合您的间隔旋转和发送日志。
如果您是spot实例或实例支持的实例,这可能会更复杂。