避免在SNS通知上发生INSUFFICIENT_DATA CloudWatch警报

时间:2016-05-11 20:37:03

标签: amazon-web-services amazon-cloudwatch

每当SES电子邮件退回时,我都会发布一个SNS主题。我设置了CloudWatch警报,以便在过去一小时内超过通知阈值时触发。

在实践中,跳出很少见,并且由于SNS通知仅在电子邮件退回时发送,因此警报几乎全部花费在INSUFFICIENT_DATA状态。

理想情况下,我希望将缺少SNS通知视为零值。在其他监测系统(如石墨/ grafana)中,这被认为是零。"

有没有办法以这种方式处理(缺少)通知,并使警报远离数据不足状态?

2 个答案:

答案 0 :(得分:6)

当值为零时,Amazon SNS不会将指标数据发送到CloudWatch。这会导致警报INSUFFICIENT_DATA,而不会发送电子邮件。但是,您的警报应该按照需要运行而不做任何更改。

INSUFFICIENT_DATA消息来自两种情况:

  • 警报在测量期间不存在(例如,计算1小时内总计的警报需要存在至少1小时)。
  • 在定义的时间段内无数据

如果过去一小时内至少有一个数据点,并且警报已存在至少一小时,则状态将为OKALARM

因此,您应该将INSUFFICIENT_DATA视为与OK相同。(甚至可以根据进入INSUFFICIENT DATA状态触发警报!)< / p>

另外,如果您还没有,请务必使用SUM而不是AVERAGE,因为您的用例涉及查看某段时间内的消息计数。我的测试表明,SUM警报会立即触发,而AVERAGE需要更多时间。

答案 1 :(得分:0)

一个愚蠢的错误,但希望可以对某人有所帮助。

我使用模板(从AWS站点复制)创建了警报。该模板用于EC2警报,我想将其用于RDS警报。警报一直处于“ INSUFFICIENT_DATA”状态,直到我意识到维度名称值对于RDS应该是“ DBInstanceIdentifier”而不对于EC2应该是“ InstanceID”;-)

“ StateValue”:“ INSUFFICIENT_DATA”,             “尺寸”:[                 {                     “ Name”:“ InstanceId ”,                     “值”:“数据库审核”                 }             ]

应该是:

“尺寸”:[                 {                     “ Name”:“ DBInstanceIdentifier ”,                     “值”:“数据库审核”                 }             ]