基于时间的MathExpression的CloudWatch报警

问题描述 投票:0回答:1

我想使用以下

MathExpression
来创建基于(表达式有所简化)的CloudWatch警报:

IF(6 >= HOUR(TIME_SERIES(1)) && HOUR(TIME_SERIES(1)) <= 23, 1, 0)

在 AWS 控制台中,我可以添加此表达式并查看指标如何在夜间发出 1 和在白天(06:00 - 23:00)发出 0,因此这部分似乎有效。

但是,当我尝试基于上述表达式创建警报时,显示以下错误:“表达式'expr_1'中出现错误:找不到 HOUR() 函数的有效周期。”

有什么方法可以根据表达式创建警报吗?如果指标低于 1 持续 5 分钟,则应触发警报。

amazon-web-services amazon-cloudwatch
1个回答
0
投票

我最终使用了以下表达式:“IF(HOUR(count) > 6 AND HOUR(count) < 23, count)"

其中 count 是 CloudWatch(API 网关)的一个指标。

然后我创建了一个警报,它会忽略丢失的数据,从而保持当前的警报状态。

我的 CDK 代码如下所示:

MathExpression metricCountCorrected = new MathExpression(MathExpressionProps.builder()
        .expression("IF(HOUR(count) > 6 AND HOUR(count) < 23, count)")
        .usingMetrics(Map.of("count", restApi.metric("Count", MetricOptions.builder()
                .statistic(Stats.SUM)
                .period(Duration.minutes(5))
                .build())))
        .period(Duration.minutes(5))
        .build());

 metricCountCorrected.createAlarm(this, prefix.asIs() + "x", CreateAlarmOptions.builder()
        .alarmName(prefix.asIs() + "x")
        .treatMissingData(TreatMissingData.IGNORE)
        .comparisonOperator(ComparisonOperator.LESS_THAN_THRESHOLD)
        .evaluationPeriods(1)
        .threshold(1)
        .build());
© www.soinside.com 2019 - 2024. All rights reserved.