CloudWatch自定义EC2内存指标和具有AutoScaling策略的警报

Lui*_*uis 2 amazon-ec2 amazon-web-services autoscaling amazon-cloudwatch

我的目标是根据我的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
                        }
                }
        }
}
Run Code Online (Sandbox Code Playgroud)

一旦我在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
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明

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

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

谢谢。

qkh*_*pro 5

从AWS文档中,

对于CloudWatch代理,您可以使用 aggregation_dimensions

"metrics": {
  "cpu":{...}
  "disk":{...}
  "aggregation_dimensions" : [["AutoScalingGroupName"], ["InstanceId", "InstanceType"]]
}
Run Code Online (Sandbox Code Playgroud)

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

对于仍在使用旧的perl脚本的用户,请检查以下选项:

--aggregated
--auto-scaling
Run Code Online (Sandbox Code Playgroud)

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