Amazon web services AWS CloudWatchLog限制

Amazon web services AWS CloudWatchLog限制,amazon-web-services,logging,amazon-cloudwatch,amazon-cloudwatchlogs,Amazon Web Services,Logging,Amazon Cloudwatch,Amazon Cloudwatchlogs,我试图找到集中的解决方案,将我的应用程序日志从数据库(RDS)中删除 我本来打算使用CloudWatchLog,但注意到PutLogEvents请求有一个限制: PutLogEvents请求的最大速率为每秒5个请求 每个日志流 即使我将日志分成多个流(基于EC2,日志类型-错误、信息、警告、调试),也不能超过5个req的限制。对于活动应用程序,每秒的速度仍然非常有限 另一种解决方案是以某种方式累积日志,并使用日志记录批处理发送PutLogEvents,但这意味着我必须使用数据库来累积这些记录 因

我试图找到集中的解决方案,将我的应用程序日志从数据库(RDS)中删除

我本来打算使用CloudWatchLog,但注意到PutLogEvents请求有一个限制:

PutLogEvents请求的最大速率为每秒5个请求 每个日志流

即使我将日志分成多个流(基于EC2,日志类型-错误、信息、警告、调试),也不能超过5个req的限制。对于活动应用程序,每秒的速度仍然非常有限

另一种解决方案是以某种方式累积日志,并使用日志记录批处理发送PutLogEvents,但这意味着我必须使用数据库来累积这些记录

因此,问题是:

  • 可能是我错了,限制是5个。每秒的速度不是那么严格吗
  • <> LI>还有其他的解决方法吗?李>
    我的建议是在AWS实例上使用Logstash解决方案

    或者,您可以在另一个现有实例或容器上运行logstash

    它是为这个范围而设计的,它做得非常好

    Cloudwatch并非主要针对您的需要而设计


    我希望这能有所帮助。

    PutLogEvents被设计成按定义放置多个事件(根据它的名称:PutLogEvent“S”):)Cloudwatch logs代理独立完成这项工作,您不必担心这一点


    但是请注意:我不建议您生成太多的日志(例如,不要在生产中运行调试模式),因为随着日志量的增加,cloudwatch日志可能会变得非常昂贵。

    如果您直接从应用程序调用此API:简短的回答是,您需要批处理日志事件(PutLogEvents为5)

    如果您正在将日志写入磁盘,然后再推送日志,那么已经有一个代理知道如何推送日志()

    Meta:我建议您对此进行原型化,并确保它适用于您拥有的日志卷。此外,请记住,由于cloudwatch api的工作方式,一次只能有一个应用程序/用户推送到日志流(请参阅您必须传递的令牌)-因此,您可能需要使用多个流,每个用户/可能每个日志类型一个流,以确保您的应用程序不会与日志竞争


    Meta Meta:想想如果日志子系统出现故障,应用程序会如何运行,以及您是否能够承受丢失日志的可能性(即始终/始终保证获得日志对您来说是否至关重要?)。这可能会推动你做什么/你最终选择什么解决方案。

    谢谢Maurizio,当然会有帮助,但我更喜欢不需要我方管理的解决方案。谢谢,阿加尼,明白你的意思。你有没有试着看一下亚马逊的官方博客?谢谢你的回答,汤姆,你能澄清一下吗:“Cloudwatch logs代理是独立完成这项工作的,您不必为此担心。“我直接从我的应用程序调用PutLogEvents,是否有其他方法将我的应用程序日志发送到CloudWatchLog?是的,您可以安装cloudwatch日志代理并指定要推送到AWS的文件。请参阅此处的文档,这意味着我应该登录到一个文件(文件系统)。目前我正在寻找基于API调用的日志(服务)解决方案。感谢您的输入。是的,这确实是基于文件的,但与代理一起使用文件似乎很容易,而不是直接发送到cloudwatch。改用PutLogEvents有什么好处?您是否有特定的用例需要这样做?在这种情况下,您必须缓冲日志,以遵守以下限制:每秒F5个请求我刚才考虑的另一个解决方案是:将事件发送到sqs队列而不是cloudwatch日志,并使用lambda函数或worker轮询此队列以将事件放入cloudwatch日志中而不超过限制