根据自定义指标缩放AutoScaling组大小

雪域幽狐 2019-11-26 17:20 阅读:7875


    在使用AWS过程中,一般会基于CPU使用率、每个目标的请求数等来进行AutoScaling。不过有时会根据自定义指标来进行缩放AutoScaling组大小,本文以AutoScaling组平均内存使用率作为具体的自定义指标来进行扩展。实际生产过程中,不推荐使用内存使用率来进行缩放AutoScaling组。
    自定义指标首先需要安装CloudWatch Agent,或自己发送指标到CloudWatch。
    查看内存安装CloudWatch Agent即可,安装CloudWatch Agent参见https://docs.aws.amazon.com/zh_cn/AmazonCloudWatch/latest/monitoring/download-cloudwatch-agent-commandline.html。
    然后创建Role,使用此角色的服务为EC2,策略选中CloudWatchAgentServerPolicy,角色名称设置为CloudWatchAgentServerRole。然后再在EC2上附加这个角色。
接下来即可使用sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s启动Agent。然后在CloudWatch控制台上,指标->全部指标->自定义命名空间CWAgent->AutoScalingGroupName,ImageId,InstanceId,InstanceType即可看到Agent发过来的信息。

    这个时候我们可以创建警报,创建警报时,我们期望的是只要指标名称和AutoScalingGroupName,但是对InstanceId和ImageId等,发现删除不了。

    对于这个情况,需要修改Agent的配置文件。运行sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard,按自己需求进行选择,最后文件生成到/opt/aws/amazon-cloudwatch-agent/bin/config.json。注意,需要手动修改config.json,删除metrics_collected下的collectd这节,否则会报E! Error parsing /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml, open /usr/share/collectd/types.db: no such file or directory。在metrics下添加:"aggregation_dimensions" : [["InstanceId"], ["AutoScalingGroupName"]],
参考配置文件如下:
{
    "agent": {
        "metrics_collection_interval": 60,
        "run_as_user": "root"
    },
    "metrics": {
        "append_dimensions": {
            "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
            "ImageId": "${aws:ImageId}",
            "InstanceId": "${aws:InstanceId}",
            "InstanceType": "${aws:InstanceType}"
        },
        "aggregation_dimensions" : [["InstanceId"], ["AutoScalingGroupName"]],
        "metrics_collected": {
            "disk": {
                "measurement": [
                    "used_percent"
                ],
                "metrics_collection_interval": 60,
                "resources": [
                    "*"
                ]
            },
            "mem": {
                "measurement": [
                    "mem_used_percent"
                ],
                "metrics_collection_interval": 60
            }
        }
    }
}
    接着停止Agent,sudo amazon-cloudwatch-agent-ctl -a stop,然后带配置文件参数运行Agent,sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s
后续就可以在CloudWatch中看到期望的结果了。

查看Agent运行状态,sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status

0条评论

登陆后可评论