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

AWS CloudWatch仪表盘能否绘制指标全维度数据?CDK实现疑问

解决方案:自动展示所有Pod的CPU使用率指标

问题根源:你不指定dimensionsMap时,CloudWatch会按照设置的statistic把所有Pod的指标数据聚合为一条汇总线,而不是分别展示每个Pod的独立指标。要实现自动展示所有Pod(包括新增的),可以用以下两种方案:


方案一:使用CloudWatch搜索表达式(最简便)

直接通过搜索表达式匹配所有带podName维度的指标实例,后续新增Pod会自动被纳入图表:

import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch';
import { Duration } from 'aws-cdk-lib';

// 用搜索表达式匹配所有podName维度的CPU指标
const podCpuSearchMetric = new cloudwatch.Metric({
  namespace: 'chkk',
  metricName: 'CPU Metrics with podName as dimension',
  // 搜索表达式规则:匹配该命名空间下所有带podName维度的指标,取最大值
  searchExpression: 'SEARCH("{\'chkk\', \'CPU Metrics with podName as dimension\'} podName=*", "Maximum", 86400)',
  period: Duration.days(1),
});

dashboard.addWidgets(
  new cloudwatch.GraphWidget({
    title: 'Pod CPU Usage (All Pods)',
    width: 12,
    left: [podCpuSearchMetric],
  }),
);

方案二:使用MetricMath动态获取维度实例(适合复杂场景)

如果需要对指标做额外计算,可通过MetricMath结合搜索表达式动态拉取所有Pod的指标:

import * as cloudwatch from 'aws-cdk-lib/aws-cloudwatch';
import { Duration } from 'aws-cdk-lib';

// 动态获取所有带podName维度的CPU指标实例
const dynamicPodMetrics = cloudwatch.MetricMath.metricFromQuery({
  id: 'allPods',
  expression: 'SEARCH("{\'chkk\', \'CPU Metrics with podName as dimension\'} podName=*", "Maximum", 86400)',
  // 用podName作为每条线的标签,清晰区分不同Pod
  label: '${podName} CPU Max',
});

dashboard.addWidgets(
  new cloudwatch.GraphWidget({
    title: 'Pod CPU Usage (Dynamic)',
    width: 12,
    left: [dynamicPodMetrics],
  }),
);

注意事项

  • 确认你的指标确实携带podName维度,否则CloudWatch无法识别到各个Pod的独立实例
  • 搜索表达式中的命名空间、指标名要和实际上报的一致,注意引号转义
  • 两种方案都能自动适配新增的Pod,无需手动修改CDK代码更新Widget

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:27:51