AWS CloudWatch警报是否可以在特定时间暂停/禁用?

时间:2014-07-14 13:12:30

标签: amazon-web-services amazon-cloudwatch

我想在特定时间段内自动切换闹钟开/关,以便在维护时不会触发。我怀疑是否存在简单或直接的方法,因为我在文档中找不到这样的东西。有没有人知道在使用CloudWatch警报时实现这一目标的不同方法,还是我错过了一个明显的解决方案?

5 个答案:

答案 0 :(得分:4)

它不是自动的,但可以做到:

http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_EnableAlarmActions.html

您要做的是:在维护窗口开始之前您禁用警报操作。当窗口结束时,启用警报操作。

答案 1 :(得分:2)

我到这里的时候正在寻找可以帮助我禁用机器的警报的机器,该机器每星期六在11:00至11:30之间执行备份。我发现的唯一解决方案是创建cronjob以禁用/启用特定警报并在特定时间运行它们:

59 10 * * 6 ec2-user aws cloudwatch disable-alarm-actions --alarm-names "Alarm-1" "Alarm-2"
31 11 * * 6 ec2-user aws cloudwatch disable-alarm-actions --alarm-names "Alarm-1" "Alarm-2"

显然,您的节点需要有权访问CloudWatch。我给了它CloudWatchFullAccess。

答案 2 :(得分:1)

另一个想法是使用 math expressions。在最简单的情况下,IFHOUR 的组合会有所帮助。这可以直接在 cloudwatch 中完成,无需 lambda 函数。

一个例子来说明这个想法:假设一个指标 m 只将自然数作为值,如果 m=0 触发一个警报。 那么你可以使用表达式

IF(HOUR(m) > 8 && HOUR(m) < 18, m, m+0.01)

而不是警报中的 m。请注意,HOUR 以 UTC 返回小时,因此将其调整为您的时区。 0.01 仅在小时超出区间 [8, 18] 时添加。如果 m 实际上是 0,额外的 0.01 确保不会触发 0 的警报检查。 0.01 是一个任意值,必须小到不会改变指标的含义。对于所有指标,可能无法找到这样的数字。我想你明白了。

要通过 Cloudwatch UI 向警报定义添加数学表达式,请按以下顺序单击按钮:

  1. 在闹钟创建期间: 选择指标 -> 查看图表指标 -> 添加数学表达式
  2. 或者在编辑闹钟期间: 编辑(在第一步指定指标和条件)-> 添加数学表达式

(这个问题是最热门的谷歌搜索结果之一,所以我想添加一个对我有帮助的解决方法。)

答案 3 :(得分:0)

是的,就像上面你可以使用CLI来做到这一点。此外,您可以停止从自定义指标的脚本INCASE发送数据,以便自动停止警报。

另一种方法是您可以编写一个脚本,您可以使用put-alarm(CloudWatch CLI)定义警报。可能有一个创建警报的功能和一个删除它们的功能。需要时打电话给他们。

答案 4 :(得分:0)

同意。在“下班时间”上感觉到“数据存在”警报的痛苦。我希望利用AWS Lambda的预定CloudWatch触发器,这是我们新的转到调度程序,用于以少于1 /分钟的速率调用操作。

https://docs.aws.amazon.com/lambda/latest/dg/with-scheduled-events.html https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/cloudwatch.html#CloudWatch.Client.disable_alarm_actions