我有一个应用程序,每分钟都会向AWS提供一个自定义Cloudwatch指标。这应该是一个心跳,所以我知道应用程序还活着。
现在我想对此指标发出警报,以便在心跳停止时通知我。我尝试使用不同的云观察警报统计数据来完成此操作,包括“平均值”和“数据样本”,并在给定时间段内设置小于1的警报阈值。但是,在所有情况下,如果我的应用程序死机并停止报告心跳,则警报将仅进入“数据不足”状态,并且永远不会进入“警报”状态。
我知道我可以在“数据不足”状态下发出通知,但我希望这会显示为警报。这可以在Cloudwatch中使用吗?
谢谢,
马特
答案 0 :(得分:5)
不要将自定义指标推送到Cloudwatch,而应考虑:
以与您相同的周期性方式将消息推送到SNS主题,并为SNS主题的NumberOfMessagesPublished指标设置CloudWatch监视器。如果心跳数低于您指定的时间段的预期值,无论是因为应用程序崩溃还是服务器崩溃,度量标准都将进入警报状态。
答案 1 :(得分:4)
我认为进入“数据不足”状态的警报与处理缺失数据的方式有关。正如doc所述:
类似于每个警报始终处于三种状态之一的情况,报告给CloudWatch的每个特定数据点都属于以下三种类别之一:
- 未违反(在门槛范围内)
- 违反(违反门槛)
- 缺少
您可以指定警报处理缺失数据点的方式。选择是否将缺失的数据点视为:
- 缺失(警报回溯到更远的时间以找到其他数据点)
- notBreaching(作为阈值内的数据点处理)
- 违规(被视为违反门槛的数据点)
- 忽略(保持当前警报状态)
默认行为缺失。
所以我认为将缺失的数据点指定为违反可以解决问题:)
答案 2 :(得分:1)
答案 3 :(得分:0)
对于单个应用程序,您需要设置Insufficient Data警报。 我一直在玩@BestPractices解决方案(https://stackoverflow.com/a/31574866/2447670),据我所知,它仍然存在“数据不足”而不是“报警”的问题。我不确定我是否遗漏了一些东西,但我知道它的数据不足,因为没有什么可以计算/分析。 如果你每1分钟有一个“勾号”并创建一个“低于1滴答”的闹钟,那么如果应用程序不发送任何勾号,则闹钟将没有足够的数据。如果有“半个刻度”(当然这是不可能的),那么它会发出警报,因为它将有任何数据要分析(所以它不会有“数据不足”),同时它将低于阈值。
如果您愿意,例如n个应用程序(n> 1)向SNS发送消息以显示它们处于活动状态并且您将为“低于n”状态设置警报,然后如果其中一个应用程序将死亡,它将进入警报状态(但是如果所有人都死了,那么再次选择数据不足。