首页 > 解决方案 > 使用 CDK 部署 AWS Cloudwatch 控制面板:如何隐藏指标

问题描述

我有一个自定义指标,我将更新推送到我的代码中。在 CDK 中,我从这个自定义指标创建了一个派生指标。我希望派生指标显示在仪表板中,但隐藏原始指标。我怎样才能做到这一点?

这是我成功部署的精简(TypeScript)CDK 代码:

  const createDashboard = (scope: cdk.Construct, namespace: string, statistic = Statistic.AVERAGE) => {
  const customDynamoLatencyMetric: IMetric = new Metric({
    period: Duration.minutes(1),
    metricName: 'MY_DYNAMO_LATENCY_METRIC',
    namespace,
    statistic,
  });

  const derivedAverageDynamoLatencyMetric = new MathExpression({
    expression: 'm1/1000', label: 'To Dynamo Latency', usingMetrics: { m1: customDynamoLatencyMetric }, period: Duration.minutes(1),
  });

  const dashboard = new Dashboard(
    scope,
    'myDashboard', {
      dashboardName: 'myDashboard',
    },
  );

  const widget = new GraphWidget({
    title: 'Average Latency',
    left: [customDynamoLatencyMetric, derivedAverageDynamoLatencyMetric],
    view: GraphWidgetView.TIME_SERIES,
    region: AWS_DEFAULT_REGION,
    width: 12,
  });

  dashboard.addWidgets(widget);
};

如果我在 AWS Cloudwatch Dasgboard 控制台中手动将此指标标记为不可见,那么当我在 Cloudwatch 控制台中查看/编辑源时,我会看到以下内容:

"metrics": [
                    [ "stephenburns-gcs-pipeline", "DYNAMO_LATENCY", { "id": "m1", "visible": false } ],
                    [ { "label": "To Dynamo Latency", "expression": "m1/1000", "period": 60, "id": "e1", "region": "ap-southeast-2" } ]
            ]

我的问题是如何通过 CDK获得“可见”:虚假属性?

我尝试使用 Metric 的维度属性,例如

dimensions: { visible: false }

但它在部署时失败并出现错误:“无效的度量字段类型,只允许“字符串”类型”

有谁知道如何将指标标记为最初不可见?

标签: amazon-cloudwatchdashboardaws-cdk

解决方案


如果只将原始添加Metric到 的usingMetrics属性中MathExpression而不直接添加到 中GraphWidget,CDK 似乎会自动设置visible为 false。CDK 文档目前(从 1.123.0 版开始)没有指示Metric直接设置 a 可见性的方法。

在您提供的代码示例中,这只需要更改行:

left: [customDynamoLatencyMetric, derivedAverageDynamoLatencyMetric],

至:

left: [customDynamoLatencyMetric],

推荐阅读