问题描述
一种方法是让警报监控自动发出的 Cloudwatch 指标 4XXError
。但是,问题在于它无法将限制错误 (429
) 与其他 4xx
错误区分开来。因此,我的警报可能因限制以外的原因触发,这违背了警报的特定目的 - 仅专门监控限制。
解决方法
Api 网关日志,只要在阶段级别启用,应该打印类似于
的日志*******vit5mg 超出 API 阶段 abc123npx8/qa 的配额限制:使用计划 ID v2tyvt 的关键配额已用完。限制:1 期间:DAY 方法
已完成状态:429
我们可以在文本 completed with status: 429
上设置一个 cloudwatch logs 指标过滤器,指标值为 1。我们可以在其上创建仪表板或警报等。
是的,现在可以使用正确的配置进行设置:
{"APIId":"$context.apiId","DomainName":"$context.domainName","ErrResponse":"$context.error.responseType","ErrValidString":"$context.error.validationErrorString","ErrorMessg":"$context.error.message","RequestId":"$context.requestId","RequestPath":"$context.path","RequestTime":"$context.requestTime","ResourcePath":"$context.resourcePath","SourceIp":"$context.identity.sourceIp","Stage":"$context.stage","StatusCode":"$context.status"}
- 使用正确的 json 模式设置指标过滤器,例如{ $.StatusCode = 429 }
- 根据过滤器设置闹钟
瞧!