2

我正试图找到集中的解决方案来移动我的应用程序从数据库(RDS)中记录日志。AWS CloudWatchLog限制

我想用CloudWatchLog但注意到,有对PutLogEvents请求限制:

一个PutLogEvents请求的最大速率是每秒 5只要求每个日志流。

即使我将我的日志分成许多流(基于EC2,日志类型 - 错误,信息,警告,调试)5个请求的限制。每秒对活动应用程序仍然是非常严格的限制条件。

另一种解决方案是以某种方式累积日志并发送带日志记录批处理的PutLogEvents,但它意味着然后我被迫使用数据库来累积该记录。

所以问题是:

  1. 可能是我错了,5个REQ的限制。每秒不是那么严格?
  2. 是否有其他解决方案,我应该考虑,例如DynamoDB?

回答

0

我的建议是在AWS实例上使用Logstash解决方案。

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

https://www.elastic.co/products/logstash

它是专为这个范围,它奇妙地。

Cloudwatch,并非主要为您的需要而设计。

我希望这有助于某种方式。

+0

非常感谢Maurizio,它确实有帮助,但我更喜欢不需要管理的解决方案。再次感谢 – Observer

+0

我明白你的意思。 你有没有试图看看这个官方亚马逊博客条目? https://aws.amazon.com/blogs/aws/cloudwatch-log-service/ –

1

PutLogEvents旨在根据定义放置几个事件(按照名称:PutLogEvent“S”):) Cloudwatch日志代理正在完成此操作,您不必担心这一点。

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

+0

感谢您的回答Tom,请您澄清一下: “Cloudwatch日志代理正在自行完成,您不必担心这一点。“ 我从我的应用程序中直接调用PutLogEvents,是否有任何其他方式将我的应用程序日志发送到CloudWatchLog? – Observer

+0

是的,您可以安装cloudwatch日志代理并指定要推送到AWS的文件。在这里看到文档http://docs.aws.amazon.com/fr_fr/AmazonCloudWatch/latest/DeveloperGuide/QuickStartEC2Instance.html – Tom

+0

我明白了,这意味着我应该登录到一个文件(文件系统)。目前我正在寻找基于API调用(服务)解决方案。感谢您的输入。 – Observer

0

如果您直接从您的应用程序调用此API:简短的答案是,您需要批量记录事件(PutLogEvent为s)。

如果你正在写的日志磁盘之后,你正在推动他们已经有一个知道如何把日志(http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/QuickStartEC2Instance.html

代理

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

Meta Meta:思考如果日志子系统发生故障,并且您可以忍受丢失日志的可能性,那么您的应用程序的行为如何(例如,对于您总是/始终保证您将获得日志?)。这可能会推动你做什么/你最终选择什么解决方案。