我有异步发布的 CloudWatch 指标,有时还包含过去的数据点。例如,今天可以发布上周数据点的指标。 PutMetricData API 允许这样做,并指出:“您可以指定与每个数据点关联的时间戳。您可以指定当前日期之前最多两周的时间戳,以及当前日期之后最多 2 小时的时间戳。日期和时间。”
我还为这些指标设置了警报。当指标超过给定阈值时,我希望触发警报。
此行为对于最新数据点来说是标准行为,但是使用较旧时间戳发布的指标是否也可能触发警报?例如,我希望当发布具有上周时间戳的数据点并且该数据点值高于警报阈值时激活警报。
谢谢!
我想知道我是否可以通过较长的警报评估期来实现这种行为。但这会使警报长时间触发吗?我希望警报在检测到超过阈值的数据点时立即触发。
我认为如果没有 CloudWatch 之外的任何其他逻辑,就不可能做到这一点。
如果您从脚本(bash、Lambda 等)执行
PutMetricData
,那么如果指标值超出阈值,您也许还可以包含 SetAlarmState
API 调用。
类似这样的:
#!/bin/bash
THRESHOLD=your-alarm-threshold
aws cloudwatch put-metric-data --namespace $NAMESPACE --metric-data $DATA --metric-name $NAME --timestamp $TIMESTAMP --unit $UNIT --value $VALUE
if [[ $VALUE > $THRESHOLD ]]; then
aws cloudwatch set-alarm-state --alarm-name $ALARM_NAME --state-value ALARM --state-reason "Breached Threshold on $TIMESTAMP"
# or use a different way to notify you instead of CloudWatch alarm, you can just notify yourself from using SNS Publish API.
aws sns publish --topic-arn $ARN --message "Breached Threshold on $TIMESTAMP"
fi
但是,您可能需要将警报设置回正常状态。不确定 CloudWatch 是否会在新指标出现时更新警报状态。
https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/set-alarm-state.html