如何为AWS中无利用率数据的Service Quota创建CloudWatch使用告警
问题解答
一、部分Service Quota无利用率详情的原因
- 资源特性与监控优先级:像
Internet gateways per Region这类配额属于静态计数型资源,用户通常不会高频创建/销毁这类资源,AWS默认不会为这类低波动、低频率变更的配额提供利用率监控指标,而是优先覆盖那些资源消耗波动大、高频使用的配额(比如EC2实例数、EBS卷数量等)。 - 服务监控覆盖范围限制:并非所有AWS服务的配额都被纳入默认的CloudWatch指标体系,部分服务的配额监控能力尚未完善,没有默认生成利用率相关的指标和可视化图表。
- 指标采集逻辑差异:有些配额的使用量无法通过被动监控采集,需要主动调用API获取,AWS没有默认开启这类主动采集的逻辑,所以不会自动生成利用率字段和图表。
二、为无利用率指标的配额创建告警的方案
方案1:AWS Config + CloudWatch告警
- 创建自定义AWS Config规则,通过Lambda函数实现配额检查逻辑:
- 在Lambda中调用对应服务的API(比如VPC的
describe-internet-gateways)获取当前使用的互联网网关数量。 - 调用
describe-service-quotasAPI获取该配额的上限值。 - 计算使用率,若超过设定阈值(比如80%),则标记为不合规。
- 在Lambda中调用对应服务的API(比如VPC的
- 基于AWS Config规则的合规状态,创建CloudWatch告警:
- 当规则变为不合规时,触发告警并发送通知到SNS主题(可关联邮件、Slack等渠道)。
方案2:定时Lambda函数 + EventBridge + SNS/CloudWatch告警
- 编写Lambda函数,实现配额检查逻辑:
- 使用AWS SDK调用资源描述API和Service Quotas API,获取使用量与配额上限。
- 计算使用率,若超过阈值,直接调用SNS发送通知;或者将使用率作为自定义指标推送到CloudWatch。
- 设置EventBridge规则,定期触发Lambda函数(比如每小时执行一次)。
- 若选择推送自定义指标到CloudWatch,可基于该指标创建标准CloudWatch告警,配置阈值和通知渠道。
方案3:自定义脚本 + CloudWatch指标
- 编写脚本(比如Python、Bash),定期调用AWS CLI或SDK获取配额使用量和上限,计算使用率。
- 使用
put-metric-data命令将使用率作为自定义指标发布到CloudWatch。 - 在CloudWatch中基于该自定义指标创建告警,设置阈值和通知方式。
内容的提问来源于stack exchange,提问作者Rudin Charles
相关产品推荐
相关产品推荐

