使用缓存时如何有效地从API Gateway记录指标?

时间:2018-06-26 18:33:59

标签: aws-lambda aws-api-gateway amazon-cloudwatch

我的情况是这样的:

  • 具有单个终结点的API网关每月服务大约2.5亿个请求,并由Lambda函数提供支持。
  • 启用了缓存,并且99%的请求都命中了缓存。
  • 该请求包含我们要从中导出统计信息的查询参数。
  • 由于使用了缓存,因此大多数请求都不会命中Lambda函数。当前,我们已在API Gateway中启用了完整的请求/响应日志记录,以捕获CloudWatch中的查询参数。每周一次,我们运行一个脚本来解析日志并编译我们感兴趣的统计信息。

使用此设置的挑战

  • 我们的脚本需要大约5个小时来运行,并且仅提供上周的快照。理想情况下,我们希望对时间(例如,每5分钟或每小时)连续跟踪统计信息。
  • 使用完整的请求/响应日志记录会产生大量的日志,其中大多数都不包含我们感兴趣的任何内容。

理想情况下,我们希望完整记录请求/响应,但仍会获得我们感兴趣的统计信息。我考虑过从Lambda @ Edge登录到CloudWatch,以便能够在请求到达缓存之前捕获查询参数,然后使用指标过滤器或Kinesis来获取所需的统计信息。

这将是一个可行的解决方案,您是否可以提出另一种设置来以更有效的方式解决我们的问题而又不会花费太多的费用?

1 个答案:

答案 0 :(得分:1)

您可以在API(https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-logging.html)上配置访问日志,该访问日志可供选择(请求和响应的一部分)并将更多结构化日志发布到cloudwatch。

然后您可以使用cloudwatch过滤器模式(https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html)生成一些指标或将日志输入到您的分析引擎(或在当前运行时运行脚本)。