Amazon EC2 AutoScaling CPUUtilization Alarm- INSUFFICIENT DATA

14,081

Solution 1

The official answer from AWS goes like this:

Hi, There is an inherent delay in transitioning into INSUFFICIENT_DATA state (only) as alarms wait for a period of time to compensate for metric generation latency. For an alarm with a 60 second period, the delay before transition into I_D state will be between 5 and 10 minutes.

John.

Apparently this is a temporary state and will likely resolve itself.

Solution 2

I am not sure what's going on in the backend, but if you compare the alarm history you will see AWS remove the 'unit' column if you just modify the alarm without any change as at7000ft said. So remove the unit column of your script.

Solution 3

Make sure that the alarm's Namespace is 'AWS/EC2'.

I know this is a long time after the original question, but in case others find this via Google, I had the same problem, and it turned out I set alarm's Namespace improperly.

Solution 4

It is needed to publish data with the same unit used to create the alarm. If you didn't specify one, it will be a <None> unit.

Unit can be specified in aws put-metric-data and aws-put-metric-alarm with --unit <value>

Unit <value> can be:

  • Seconds
  • Bytes
  • Bits
  • Percent
  • Count
  • Bytes/Second (bytes per second)
  • Bits/Second (bits per second)
  • Count/Second (counts per second)
  • None (default when no unit is specified)

Units are also case-sensitive, be carefull about that in your scripts.

For CPUUtilization, you can use Percent.

After the first data-set is sent to your alarm (it can take up to 5 minutes for a non-detailed monitored instance), the alarm will switch to the OK or ALARM state instead of the INSUFFICIENT_DATA one.

Solution 5

I had a similar problem, my alarm was constantly in INSUFFICIENT_DATA status although I can see the metric in the GUI.

Come out that this happen, because I specified the wrong Unit for the metric, when I created the Alarm. No error was reported back but it never became GREEN.

Better to avoid to specify it, if you are not sure, and AWS will do the correct match in the background.

Share:
14,081
Marogian
Author by

Marogian

Updated on June 15, 2022

Comments

  • Marogian
    Marogian almost 2 years

    So I've been using Boto in Python to try and configure autoscaling based on CPUUtilization, more or less exactly as specified in this example: http://boto.readthedocs.org/en/latest/autoscale_tut.html

    However both alarms in CloudWatch just report:

    State Details: State changed to 'INSUFFICIENT_DATA' at 2012/11/12 16:30 UTC. Reason: Unchecked: Initial alarm creation

    Auto scaling is working fine but the alarms aren't picking up any CPUUtilization data at all. Any ideas for things I can try?

    Edit: The instance itself reports CPU utilisation data, just not when I try and create an alarm in CloudWatch, programatically in python or in the interface. Detailed monitoring is also enabled just in case...

    Thanks!