You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS CDK基于SQL语句创建CloudWatch告警?

解决方案

方法一:直接使用CloudWatch Metrics Insights SQL(推荐)

你可以通过cloudwatch.Metric.fromMetricQuery基于Metrics Insights SQL创建指标,再绑定到告警上,和控制台用SQL创建告警的逻辑完全一致:

const gpuAlarm = new cloudwatch.Alarm(this, 'aiGpuAlarm', {
  alarmName: metaInfo['alarmNameGpu'],
  comparisonOperator: cloudwatch.ComparisonOperator.GREATER_THAN_THRESHOLD,
  threshold: 30,
  evaluationPeriods: 1,
  // 基于Metrics Insights SQL创建指标
  metric: cloudwatch.Metric.fromMetricQuery(this, 'AiGpuAvgMetric', {
    query: `SELECT AVG(disk_used_percent) FROM "aka-dev" WHERE AutoScalingGroupName = 'aka-dev-ai-asg'`,
    period: cdk.Duration.seconds(60),
  }),
});

方法二:手动指定维度与统计值(无需SQL)

如果逻辑简单,也可以直接通过维度筛选指标并指定统计聚合方式,等价于你SQL的逻辑:

const gpuAlarm = new cloudwatch.Alarm(this, 'aiGpuAlarm', {
  alarmName: metaInfo['alarmNameGpu'],
  comparisonOperator: cloudwatch.ComparisonOperator.GREATER_THAN_THRESHOLD,
  threshold: 30,
  evaluationPeriods: 1,
  metric: new cloudwatch.Metric({
    namespace: 'aka-dev',
    metricName: 'disk_used_percent',
    // 筛选AutoScalingGroupName维度
    dimensionsMap: {
      AutoScalingGroupName: 'aka-dev-ai-asg',
    },
    // 指定统计方式为平均值,对应SQL里的AVG
    statistic: cloudwatch.Statistic.AVERAGE,
    period: cdk.Duration.seconds(60),
  }),
});

说明

  • 方法一适合复杂的Metrics Insights查询场景,比如多维度聚合、复杂过滤逻辑
  • 方法二更简洁,适合简单维度筛选+单一统计的场景,性能开销更低

内容的提问来源于stack exchange,提问作者whitebear

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 19:52:16