如何引用由 ECS/Fargate 的容器见解创建的 CloudWatch 指标

Cla*_*ise 3 javascript amazon-ecs typescript aws-fargate aws-cdk

我创建了一个 ECS 集群,如下所示:

    this.cluster = new ecs.Cluster(this, 'Cluster', {
        containerInsights: true,
        vpc: ec2.Vpc.fromLookup(this, props.stage + 'Vpc', {isDefault: false})
    });
Run Code Online (Sandbox Code Playgroud)

我想根据我的集群创建一个 CW 警报,如下所示:

    const CPUHigh = new cw.Alarm(this, "CPUHigh", {
        metric: this.cluster.metric("CPUUtilized"),
        threshold: 50,
        evaluationPeriods: 3,
        period: cdk.Duration.seconds(60),
        comparisonOperator: cw.ComparisonOperator.GREATER_THAN_THRESHOLD
    })
Run Code Online (Sandbox Code Playgroud)

但即使该指标与 Container Insights 创建的指标相匹配,似乎也无法以这种方式引用。

有谁知道它应该如何引用?

Jon*_*mek 5

CDK 仅支持某些指标基线,并且不涵盖容器洞察,但这不是问题,您可以非常轻松地创建自己的指标对象。对于容器洞察,它看起来像这样:

new cloudwatch.Metric({
  metricName: 'NetworkTxBytes',
  namespace: 'ECS/ContainerInsights',
  dimensionsMap: {
    ServiceName: props.ecsService.serviceName,
    ClusterName: props.ecsCluster.clusterName,
  },
  statistic: 'avg',
  period: cdk.Duration.minutes(5),
}),
Run Code Online (Sandbox Code Playgroud)

这里重要的是命名空间、dimensionMap 和 metricName。

您可以从指标控制台和最后一个选项卡“源”获取有关命名空间和维度的信息。