亚马逊EC2自动扩展CPU利用率警报-数据不足

12

所以我一直在使用Python中的Boto,尝试根据CPUUtilization配置自动缩放,几乎完全按照此示例指定的方式:

http://boto.readthedocs.org/en/latest/autoscale_tut.html

但是CloudWatch中的两个警报都只报告:

状态详情:状态于2012/11/12 16:30 UTC更改为“INSUFFICIENT_DATA”。原因:未检查:初始警报创建

自动缩放工作正常,但警报没有捕获任何CPUUtilization数据。有什么想法可以尝试的吗?

编辑:实例本身报告CPU利用率数据,但当我尝试在CloudWatch中创建警报时,在Python程序或接口中均无数据显示。已启用详细监视以防万一...

谢谢!


不幸的是,我唯一能让我的闹钟工作的方法是在AWS控制台中构建它,使用CLI获取所有属性,然后将这些属性复制到CloudFormation中 - 我认为仅凭文档就足以直接深入了解CloudFormation或类似技术。 - tschumann
10个回答

11

AWS 官方回答如下:

您好,进入 INSUFFICIENT_DATA 状态(仅限)存在固有延迟,因为警报需要等待一段时间以补偿指标生成延迟。对于一个周期为60秒的警报,转换到 I_D 状态之前的延迟将在5至10分钟之间。

John.

显然这是一个临时状态,并且可能会自行解决。


3
整天都是这样——已经与 AWS 支持聊了几个小时,但他们还没有取得任何进展... - Marogian
唉!你知道那该死的度量生成延迟是怎么回事...但愿我能提供更多帮助。 - platforms

5

我不确定后台出现了什么问题,但是如果你比较一下警报历史记录,你会发现AWS在没有任何更改的情况下修改警报时会删除“unit”列,正如at7000ft所说的那样。因此,请从你的脚本中删除单位列。


这是我使用C# SDK唯一有效的方法 - 必须删除“Unit = StandardUnit.Seconds” - 然后一切都正常工作。 - mdegges

3

请确保警报的命名空间为“AWS/EC2”。

我知道这是在原问题之后很长一段时间,但是以防其他人通过Google找到此内容,我遇到了同样的问题,并且发现我错误地设置了警报的命名空间。


+1 这真的很重要。没有那个警报器会陷入 INSUFFICIENT_DATA 状态。谢谢! - douglaslps

2
需要使用创建警报时使用的相同单位发布数据。如果您没有指定单位,则将使用<None>单位。
单位可以在aws put-metric-dataaws-put-metric-alarm中使用--unit <value>进行指定。
单位<value>可以是:
  • 字节
  • 比特
  • 百分比
  • 计数
  • 每秒字节(每秒字节数)
  • 每秒比特(每秒比特数)
  • 每秒计数(每秒计数)
  • 无(未指定单位时默认值)
单位也区分大小写,在脚本中要注意。
对于CPU利用率,可以使用百分比。
发送第一个数据集到警报后(非详细监视实例可能需要最多5分钟),警报将从INSUFFICIENT_DATA状态切换为OK或ALARM状态。

1

有一个目录 /var/tmp/aws-mon/,其中包含一些文件。其中一个是 instance-id。我所在的实例是从 AMI 创建的,这个文件保留了旧的实例 ID。我只是编辑了它,并确保 /var/tmp/aws-mon/placement/availability-zone 也是正确的。警报几乎立即变为 OK。


1
我曾遇到类似的问题,我的警报一直处于 INSUFFICIENT_DATA 状态,尽管我可以在 GUI 中看到该指标。原来是因为我在创建警报时指定了错误的单位。虽然没有返回错误,但它从未变为 GREEN。
如果不确定,请最好避免指定单位,AWS 将在后台执行正确的匹配。

1
我有这个问题。请确保您用来创建报警的度量名称与实际的度量名称匹配。
您可以使用以下命令列出度量标准:
aws cloudwatch list-metrics --namespace=<NAMESPACE, e.g. System/Linux, etc>

寻找度量和度量名称。确保您的警报已针对该度量进行配置。


1
我在CloudWatch中为一个RDS CPUUtilization > 60的报警创建了一个CloudFormation,但是遇到了相同的INSUFFICIENT_DATA报警状态(详情中显示“原因:未检查:初始报警创建”)。这是一个非常简单的解决方法,我发现通过选择该报警,点击修改按钮,然后保存按钮(不更改任何内容),该报警将进入OK状态,一切都很正常。

1
据我所知,默认的度量分辨率为5分钟(如果支付费用,可以降低到1分钟或类似时间),因此,如果您的警报测量周期低于该时间,则它将永久保持在“INSUFFICIENT_DATA”状态。在我的情况下,CPU利用率的测量周期为1分钟,将其更改为5分钟即可解决状态问题。

0

我也遇到了这个问题,但原因不同:我在我的Cloudformation模板中传递了ES集群ARN而不是域名。这非常令人沮丧


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接