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 将数学表达式添加到警报定义,请按以下顺序单击按钮:
(这个问题是谷歌搜索结果中排名最高的问题之一,所以我想添加一个对我有帮助的解决方法。)
小智 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。
扩展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。
然后,您可以将其与原始指标警报组合成一个复合警报,该警报仅在两个指标警报触发时才会响起。
它不是自动的,但是可以做到的:
http://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_EnableAlarmActions.html
您要执行的操作是:在维护窗口开始之前,立即禁用警报操作。窗口结束时,启用警报操作。
| 归档时间: |
|
| 查看次数: |
6432 次 |
| 最近记录: |