首页 > 解决方案 > 当由 cloudformation 模板形成时,AWS cloudwatch 警报无法访问来自 EMR 集群指标的数据

问题描述

{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Metadata": {
        "AWS::CloudFormation::Designer": {
            "0146279a-ddf6-40fa-bf45-612cebe20c3f": {
                "size": {
                    "width": 60,
                    "height": 60
                },
                "position": {
                    "x": 290,
                    "y": 80
                },
                "z": 0,
                "embeds": []
            },
            "f53318cc-f7a9-4e0b-9d22-7de325b7409d": {
                "size": {
                    "width": 60,
                    "height": 60
                },
                "position": {
                    "x": 430,
                    "y": 80
                },
                "z": 0
            }
        }
    },
    "Resources": {
        "EMRC1YFGX": {
            "Type": "AWS::EMR::Cluster",
            "Properties": {
                "ReleaseLabel": "emr-5.30.0",
                "Instances": {
                    "MasterInstanceGroup": {
                        "InstanceCount": 1,
                        "InstanceType": "m5.xlarge"
                    },
                    "CoreInstanceGroup": {
                        "InstanceCount": 1,
                        "InstanceType": "m5.xlarge"
                    }
                },
                "Name": "Tupac",
                "JobFlowRole": "arn:aws:iam::261537044157:instance-profile/EMR_EC2_DefaultRole",
                "ServiceRole": "arn:aws:iam::261537044157:role/shubhamam"
            },
            "Metadata": {
                "AWS::CloudFormation::Designer": {
                    "id": "0146279a-ddf6-40fa-bf45-612cebe20c3f"
                }
            }
        },
        "CWA2VB7L": {
            "Type": "AWS::CloudWatch::Alarm",
            "Properties": {
                "AlarmName": "alarm101",
                "AlarmActions": ["arn:aws:sns:us-east-1:2615370449570:emr_idle_notification"],
                "ComparisonOperator": "GreaterThanOrEqualToThreshold",
                "Dimensions": [
                    {
                        "Name": "JobflowId",
                        "Value": {"Ref": "EMRC1YFGX"}
                    }
                ],
                "EvaluationPeriods": 1,
                "MetricName": "IsIdle",
                "Namespace": "AWS/ElasticMapReduce",
                "Period": 300,
                "Statistic": "Minimum",
                "Threshold": 1,
            },
            "Metadata": {
                "AWS::CloudFormation::Designer": {
                    "id": "f53318cc-f7a9-4e0b-9d22-7de325b7409d"
                }
            }
        }
    }
}

我正在使用上面的 cloudformation 模板来创建我的 EMR 集群和 Cloudwatch 警报。如果我从控制台创建一个正常的警报,它可以正常工作,但是在 cloudformation 创建时它不起作用。警报已创建,但无法从 EMR 指标中获取任何数据。它说没有数据,它仍然处于数据不足状态。

标签: amazon-web-servicesamazon-cloudformationamazon-emramazon-cloudwatch

解决方案


明显的问题是使用 ofJobflowId而不是JobFlowId

这是因为维度名称区分大小写

我在 CloudWatch 中找不到有关维度名称区分大小写的文档,因此我自己通过创建两个警报进行了测试。

一个警报基于正确拼写的维度名称AmazonEC2(计费指标)。第二个警报基于拼写不正确的拼写名称:AmazonEc2。两个警报之间的其他一切都相同。

我发现名称不正确的警报在INSUFFICIENT状态中得到了堆栈。这与 OP 报告的状态相同。

警报的屏幕截图(成本已涂黑):

在此处输入图像描述


推荐阅读