Terraform创建的CloudWatch告警显示Insufficient data问题求助
问题
我配置了监控Auto Scaling实例最大容量的CloudWatch告警,已经在Auto Scaling组监控中启用了GroupTotalInstances指标。分别通过Terraform和手动方式创建了参数完全相同的告警,但Terraform创建的告警显示Insufficient data,手动创建的却能正常工作。对比两者配置完全一致,且我用Terraform创建的其他告警都运行正常,找不到问题所在。相关Terraform代码如下:
resource "aws_cloudwatch_metric_alarm" "asg_max_size" { alarm_name = "test" alarm_description = "test" alarm_actions = ["${var.sns_cw_alarms_topic_arn}"] comparison_operator = "GreaterThanOrEqualToThreshold" evaluation_periods = 1 datapoints_to_alarm = 1 metric_name = "GroupTotalInstances" namespace = "AWS/Autoscaling" period = "${var.alarm_period}" statistic = "Maximum" threshold = "${var.instance_max_size}" treat_missing_data = "missing" insufficient_data_actions = [] ok_actions = [] dimensions = { "AutoScalingGroupName" = "${var.asg_name}" } }
排查与解决建议
- 重点检查命名空间大小写:CloudWatch命名空间严格区分大小写,正确的Auto Scaling命名空间是
AWS/AutoScaling(结尾S大写),但你的Terraform代码里写的是AWS/Autoscaling(结尾s小写)。手动创建时会自动选择正确的命名空间,这个大小写错误会直接导致告警找不到对应指标,出现Insufficient data状态,这大概率是问题根源。 - 验证维度与变量匹配度:确认
var.asg_name对应的ASG名称和实际存在的ASG名称完全一致(包括大小写),CloudWatch维度值是大小写敏感的,哪怕差一个字母都会导致无法匹配指标。 - 核对变量实际取值:执行
terraform show查看告警的实际部署参数,确认var.alarm_period(周期)、var.instance_max_size(阈值)的数值和手动创建时完全相同,避免变量插值出现意外偏差。 - 等待数据同步:如果是刚部署的Terraform告警,CloudWatch可能需要5-10分钟同步指标数据,可以等待一段时间后再查看状态,但手动创建的正常的话,这个可能性较低。
内容的提问来源于stack exchange,提问作者jok
相关产品推荐
相关产品推荐

