26

我想在特定时间段内自动打开/关闭警报,这样它们就不会在维护窗口期间触发。我怀疑是否存在简单或直接的方法,因为我在文档中找不到这样的东西。有谁知道在仍然使用 CloudWatch 警报的同时实现这一目标的不同方法,还是我错过了一个明显的解决方案?

4

6 回答 6

8

我来到这里是在寻找可以帮助我禁用我的机器警报的东西,该机器在每周六 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。

于 2019-04-13T14:11:33.933 回答
5

另一个想法是使用数学表达式。在最简单的情况下,IF和的组合HOUR可能会有所帮助。这可以直接在 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. 或在编辑警报期间: 编辑(在第一步中指定指标和条件)->添加数学表达式

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

于 2021-07-14T10:07:10.833 回答
5

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

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

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

于 2016-02-22T17:30:49.007 回答
3

扩展mrteutone 的答案,首先为类似的指标创建一个单独的指标警报

IF(8 <= HOUR(TIME_SERIES(1)) && HOUR(TIME_SERIES(1)) < 18, 1, 0)

并在值 > 0 时将其设置为警报:这会为您提供始终处于ALARM8-18 UTC 之间的状态的警报。

然后,您可以将其与您的原始指标警报组合成一个复合警报,该警报仅在两个指标警报触发时才会响起。

于 2021-09-10T09:37:05.580 回答
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

于 2019-04-24T17:38:15.413 回答
0

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

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

于 2017-01-03T14:21:00.520 回答