如何统计Serverless部署的AWS Lambda中各POST接口的调用次数?
解决Lambda多接口调用次数统计的方案
代码嵌入自定义CloudWatch指标
在每个接口的处理逻辑开头,直接调用CloudWatch的PutMetricData接口上报调用次数。示例代码如下:const AWS = require('aws-sdk'); const cloudwatch = new AWS.CloudWatch(); app.post('/a', async(req, res) => { // 上报/a接口调用次数 await cloudwatch.putMetricData({ Namespace: 'LambdaAPIMetrics', MetricData: [ { MetricName: 'CallCount', Dimensions: [{ Name: 'Endpoint', Value: '/a' }], Value: 1, Unit: 'Count' } ] }).promise(); // 原有业务逻辑代码 });记得给Lambda执行角色加上
cloudwatch:PutMetricData权限,之后就能在CloudWatch控制台的自定义命名空间下,按Endpoint维度查看每个接口的调用次数。API Gateway访问日志+CloudWatch Insights分析
开启API Gateway的访问日志,把日志输出到CloudWatch Logs。日志里会记录每个请求的路径,接着用CloudWatch Insights写查询语句统计:fields @requestPath | stats count(*) as CallCount by @requestPath | sort CallCount desc这种方式不用改Lambda代码,只要配置API Gateway日志就能实现,适合不想动业务代码的场景。
X-Ray追踪统计
开启Lambda和API Gateway的X-Ray追踪功能,在X-Ray控制台的服务地图里能直接看到各接口的调用次数、响应耗时等数据。也可以通过X-Ray的查询功能,按请求路径聚合统计调用次数。需要给相关服务配置X-Ray的权限,采样率可以根据需求调整。Serverless Framework插件辅助
如果是用Serverless Framework部署的,可以用第三方插件(比如serverless-plugin-cloudwatch-metrics)自动为每个接口生成调用次数指标,不用手动写上报代码,简化配置流程。
内容的提问来源于stack exchange,提问作者Yammo
相关产品推荐
相关产品推荐

