如何通过CloudWatch统计AWS API Gateway指定时段的调用次数?
解决API Gateway CloudWatch Count指标显示异常的问题
嘿,我之前也碰到过这个坑!你遇到的问题核心是CloudWatch统计指标时选了错误的统计类型,导致本来应该累加的总调用次数变成了数据点的数量或者平均值。
问题根源
API Gateway的Count指标本身是记录每个上报周期内的请求数,但CloudWatch默认的统计方式可能不是你需要的:
- 如果选了
SampleCount:它统计的是指标数据点的数量,而不是请求总数。比如你每个请求单独生成一个数据点,那不管多少请求,每个时段的SampleCount可能就是数据点的个数(如果请求分散的话可能每个周期1个数据点,所以显示1)。 - 如果选了
Average:它会计算数据点的平均值,同样无法得到总调用数。 - 只有选
Sum:才会把指定时段内所有数据点的请求数累加起来,得到你想要的总调用次数(比如5分钟内100次请求就显示100)。
具体解决步骤
- 打开CloudWatch控制台,进入左侧导航栏的「指标」页面。
- 在指标列表中找到「AWS/ApiGateway」命名空间,展开后选择对应的维度(比如按API名称、阶段Stage来筛选)。
- 选中
Count指标后,在页面上方的「统计」下拉菜单里,选择Sum(而不是默认的Average或SampleCount)。 - 调整时间范围(比如5分钟、10分钟)和周期(比如300秒对应5分钟),此时你就能看到对应时段内的总调用次数了。
用CLI查询的方式
如果需要通过命令行或者脚本获取数据,记得指定Sum统计类型:
aws cloudwatch get-metric-statistics \ --namespace AWS/ApiGateway \ --metric-name Count \ --dimensions Name=ApiName,Value=你的API名称 Name=Stage,Value=prod \ --start-time 2024-05-20T00:00:00Z \ --end-time 2024-05-20T00:05:00Z \ --period 300 \ --statistics Sum
这样返回的结果里,Sum字段就是你要的5分钟内总调用次数啦!
内容的提问来源于stack exchange,提问作者rozza
相关产品推荐
相关产品推荐

