【问题标题】:CloudWatch custom EC2 memory metric and alarm with AutoScaling policyCloudWatch 自定义 EC2 内存指标和带有 AutoScaling 策略的警报
【发布时间】:2018-08-05 18:36:21
【问题描述】:

我的目标是根据我的 EC2 实例上使用的内存来测试 AutoScaling。

为了监控我的 EC2 实例内存,我在我的 EC2 实例上安装了 CloudWatch 代理,并创建并配置了我的 CloudWatch 代理配置文件,如下所述: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file.html

{
        "metrics": {
                "append_dimensions": {
                        "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
                        "ImageId": "${aws:ImageId}",
                        "InstanceId": "${aws:InstanceId}",
                        "InstanceType": "${aws:InstanceType}"
                },
                "metrics_collected": {
                        "cpu": {
                                "measurement": [
                                        "cpu_usage_idle",
                                        "cpu_usage_iowait",
                                        "cpu_usage_user",
                                        "cpu_usage_system"
                                ],
                                "metrics_collection_interval": 60,
                                "totalcpu": false
                        },
                        "disk": {
                                "measurement": [
                                        "used_percent",
                                        "inodes_free"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "diskio": {
                                "measurement": [
                                        "io_time"
                                ],
                                "metrics_collection_interval": 60,
                                "resources": [
                                        "*"
                                ]
                        },
                        "mem": {
                                "measurement": [
                                        "mem_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        },
                        "swap": {
                                "measurement": [
                                        "swap_used_percent"
                                ],
                                "metrics_collection_interval": 60
                        }
                }
        }
}

在 EC2 实例上启动 CloudWatch 代理后,自定义指标就可以正常工作,我可以在 CloudWatch 上看到它们。

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c ssm:configuration-parameter-store-name -s

我用这个 EC2 实例创建了一个 AMI,并用这个 AMI 创建了一个 AutoScaling 组。 然后,我根据自定义指标“mem_used_percent”(>=50)设置了一个警报,并将其用作 AutoScaling 组策略(添加 1 个实例)。附上图片。

我连接到 EC2 实例并使用“压力”增加使用的内存。发出警报,触发 AutoScaling 策略并创建新的 EC2 实例。

我看到的问题是我在特定 EC2 实例上创建警报,而不是在整个 AutoScaling 组上创建警报,并且一旦初始 EC2 实例终止,警报就不再有意义。 除了 AutoScaling 组,我如何配置相同的想法?

谢谢。

【问题讨论】:

  • Auto Scaling Group 的聚合统计信息是您要查找的内容? docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/…
  • 是的,但是对于使用 CloudWatch 代理的自定义指标。
  • 我认为您可以查看 [Aggregating or Rolling Up Metrics Collected by the CloudWatch Agent] 部分docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/… 如果您使用 Pearl 脚本,请查看 --aggregate / --autoscaling 选项@987654326 @
  • 感谢 qkhanhpro。我会对其进行测试,并让您知道它是否有效。
  • "aggregation_dimensions" : [["AutoScalingGroupName"], ["InstanceId", "InstanceType"]]。这就像一个魅力。 @qkhanhpro - 你想把它作为答案吗?

标签: amazon-web-services amazon-ec2 autoscaling amazon-cloudwatch


【解决方案1】:

来自 AWS 文档,

对于 CloudWatch 代理,您可以使用 aggregation_dimensions 聚合自定义指标

"metrics": {
  "cpu":{...}
  "disk":{...}
  "aggregation_dimensions" : [["AutoScalingGroupName"], ["InstanceId", "InstanceType"]]
}

https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-common-scenarios.html

对于那些仍在使用旧 perl 脚本的人,请检查选项:

--aggregated
--auto-scaling

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/mon-scripts.html

【讨论】:

  • 嗨 @qkhanhpro 和 @Luis,我尝试在我的 cloudwatch 代理的配置中添加 "aggregation_dimensions" : [["AutoScalingGroupName"], ["InstanceId", "InstanceType"]],但我仍然无法在任何地方看到聚合指标
【解决方案2】:

我采取了同样的方法,但没有成功。

{
"metrics": {
    "metrics_collected": {
        "LogicalDisk": {
            "measurement": [
                "% Free Space"
            ],
            "metrics_collection_interval": 60,
            "resources": [
                "*"
            ]
        },
        "Memory": {
            "measurement": [
                "% Committed Bytes In Use"
            ],
            "metrics_collection_interval": 60
        },
        "Paging File": {
            "measurement": [
                "% Usage"
            ],
            "metrics_collection_interval": 60,
            "resources": [
                "*"
            ]
        },
        "PhysicalDisk": {
            "measurement": [
                "% Disk Time"
            ],
            "metrics_collection_interval": 60,
            "resources": [
                "*"
            ]
        },
        "Processor": {
            "measurement": [
                "% User Time",
                "% Idle Time",
                "% Interrupt Time"
            ],
            "metrics_collection_interval": 60,
            "resources": [
                "_Total"
            ]
        }
    },
    "append_dimensions": {
        "ImageId": "${aws:ImageId}",
        "InstanceId": "${aws:InstanceId}",
        "InstanceType": "${aws:InstanceType}",
        "AutoScalingGroupName": "${aws:AutoScalingGroupName}"
    },
    "aggregation_dimensions" : [["AutoScalingGroupName"]]
}

}

当我在 cloudwatch 管理控制台中查看输出时,我没有看到 All>CWAgent 下 AutoScalingGroupName 的聚合

【讨论】:

  • 你检查日志了吗?也许 json 可能无法正常工作。 /opt/aws/amazon-cloudwatch-agent/logs
猜你喜欢
  • 2014-12-21
  • 1970-01-01
  • 2021-07-15
  • 2020-05-26
  • 2020-10-15
  • 1970-01-01
  • 2017-11-14
  • 2020-12-20
  • 2020-03-20
相关资源
最近更新 更多