You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Terraform中正确配置ASG的CloudWatch内存利用率告警维度?

解决Terraform创建ASG内存利用率CloudWatch告警的问题

问题核心原因

CWAgent上报的mem_used_percent指标每个实例都带有InstanceId、ImageId等唯一维度,直接通过metric块仅指定AutoScalingGroupName维度时,CloudWatch无法自动聚合所有实例的指标;而空维度值又不符合AWS的参数验证规则。

正确的Terraform代码

替换原告警资源代码,使用CloudWatch Metric Math的SEARCH表达式匹配目标ASG下所有实例的指标并完成聚合:

resource "aws_cloudwatch_metric_alarm" "memory_utilization_high" {
  alarm_name          = "HighMemoryUtilizationAcrossASG"
  comparison_operator = "GreaterThanOrEqualToThreshold"
  evaluation_periods  = 3
  threshold           = 80
  alarm_actions       = [aws_sns_topic.asg_alerts.arn]
  treat_missing_data  = "breaching"

  metric_query {
    id          = "avg_memory"
    expression  = "AVG(SEARCH('{CWAgent,AutoScalingGroupName} AutoScalingGroupName=\"${var.asg_name}\" mem_used_percent', 'Average', 300))"
    label       = "Average Memory Utilisation across ASG"
    return_data = true
  }
}

代码说明

  • SEARCH表达式负责筛选目标指标:
    • {CWAgent,AutoScalingGroupName}指定搜索的命名空间为CWAgent,并基于AutoScalingGroupName维度过滤
    • AutoScalingGroupName="${var.asg_name}"精准匹配你的目标ASG
    • mem_used_percent指定要搜索的指标名称
  • AVG()函数对所有匹配到的实例指标计算平均值,逻辑与你使用CloudWatch Insights SQL查询完全一致
  • 无需拆分多个metric_query块,单个表达式即可完成搜索与聚合

验证前提

确保你的CWAgent配置中已将AutoScalingGroupName作为维度上报(从你的Insights查询能正常返回数据来看,该条件已满足)。

内容的提问来源于stack exchange,提问作者Rene

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 15:13:11