0

我想知道是否有办法设置CloudWatch警报,如果SQS队列在7天内没有收到任何流量,将会发出警报。我目前有一项工作在我的主机上每周运行一次,保证将信息添加到我的SQS队列中,如果工作没有运行,我已经有一种警告方式,但是如果出于某种原因,我还想警告作业确实运行,但不会将任何消息发送到我的队列。我知道您可以设置的最长闹钟时间为1天。是否有另一种方法来创建一个警报,以实现我在寻找的内容?AWS CloudWatch Zero Queue Size For One Week警报

编辑: 由于我的作业每周运行一次,有一种方法可以每7天监测一次指标,查看是否有任何流量在24小时内到达队列?这是更准确的,因为在6天之内,我并不期待或关心是否有任何交通只有在第7天有交通。

+0

如果您的队列在几个小时内完全不活动,SQS会将其置于某种睡眠模式并停止向CloudWatch发送统计信息。所以你可能实际上有两个问题需要解决。 –

+0

@ Michael-sqlbot - 借助CloudWatch警报,您现在可以选择如何处理丢失的数据。你可以把它看作是坏的(违反门槛),好的(不违反)或者只是忽略它:https://aws.amazon.com/about-aws/whats-new/2017/03/cloudwatch-alarms-releases-两个新的警报配置设置/ – Tartaglia

+0

@Tartaglia辉煌。感谢您将此引起我的注意。 –

回答

0

CloudWatch警报设置的限制period * number_of_datapoints_to_watch必须小于24小时。据我所知,这是没有办法的。

要获得您想要的行为,您可以自己计算自上次活动以来的天,并将其作为自定义指标发布并发布警报。

一种方式做到这一点是:

  1. 创建一个lambda函数,并将它触发每隔一小时的例子。
  2. 在lambda中,为要监视的SQS指标调用CloudWatch GetMetricStatistics。
  3. 获取返回值大于0的最新数据点,并计算现在和该数据点上的时间戳之间的差异。
  4. 使用CloudWatch PutMetricData将此值发布到新的度量标准days-since-last-activity
  5. 现在,您可以在新指标的价值超过7天时发出警报。