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

jms*_*msb 13 amazon-web-services amazon-cloudwatch

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

mrt*_*one 11

另一个想法是使用数学表达式IF在最简单的情况下,和 的组合HOUR可能会有所帮助。这可以直接在 cloudwatch 中完成,无需 lambda 函数。

举例说明这个想法:假设一个指标m仅采用自然数作为值,并且如果 则触发警报m=0。然后你可以使用表达式

IF(HOUR(m) > 8 && HOUR(m) < 18, m, m+0.01)
Run Code Online (Sandbox Code Playgroud)

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

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

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

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


小智 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"
Run Code Online (Sandbox Code Playgroud)

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


Ale*_*ksi 8

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

IF(8 <= HOUR(TIME_SERIES(1)) && HOUR(TIME_SERIES(1)) < 18, 1, 0)
Run Code Online (Sandbox Code Playgroud)

并将其设置为当值 > 0 时发出警报:这将为您提供始终处于 8-18 UTC 之间状态的警报ALARM

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

  • 我的答案存在向指标添加人工数字的问题,因此可能会创建误导性的图表。你的方法不存在这个问题。而且,这种“0/1营业时间警报开关”可以在许多复合警报中重复使用。我喜欢。 (2认同)

Mir*_*cea 5

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

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

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