Amazon web services CloudWatch自定义EC2内存度量和自动缩放策略警报
我的目标是基于EC2实例上使用的内存测试自动缩放 为了监视我的EC2实例内存,我在我的EC2实例上安装了CloudWatch代理,并创建和配置了我的CloudWatch代理配置文件,如下所述: 一旦我在EC2实例上启动了CloudWatch代理,定制指标就可以正常工作,我可以在CloudWatch上看到它们Amazon web services CloudWatch自定义EC2内存度量和自动缩放策略警报,amazon-web-services,amazon-ec2,autoscaling,amazon-cloudwatch,Amazon Web Services,Amazon Ec2,Autoscaling,Amazon Cloudwatch,我的目标是基于EC2实例上使用的内存测试自动缩放 为了监视我的EC2实例内存,我在我的EC2实例上安装了CloudWatch代理,并创建和配置了我的CloudWatch代理配置文件,如下所述: 一旦我在EC2实例上启动了CloudWatch代理,定制指标就可以正常工作,我可以在CloudWatch上看到它们 sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -
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创建了一个自动缩放组。
然后,我根据自定义指标“mem_used_percent”(当>=50时)设置了一个报警,并将其用作自动缩放组策略(添加1个实例)。附上图片
我连接到EC2实例,并使用“Stress”增加使用的内存。发出警报,触发自动缩放策略,并创建新的EC2实例
我看到的问题是,我在一个特定的EC2实例上创建了一个警报,而不是在整个自动缩放组上,一旦初始EC2实例终止,警报就不再有意义了。
除了自动缩放组,我如何配置相同的想法
谢谢。来自AWS文档 对于CloudWatch代理,您可以使用
aggregation\u维度
"metrics": {
"cpu":{...}
"disk":{...}
"aggregation_dimensions" : [["AutoScalingGroupName"], ["InstanceId", "InstanceType"]]
}
对于仍在使用旧perl脚本的用户,请检查以下选项:
--aggregated
--auto-scaling
我也采取了同样的方法,但没有成功
{
"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>CWAgentAggregate Statistics by Auto Scaling Group(按自动缩放聚合统计信息)下按AutoScalingGroupName进行的聚合是您要找的吗?是的,但是对于使用CloudWatch代理的自定义度量,我认为您可以查看[由CloudWatch代理收集的聚合或汇总度量]部分。如果您使用Pearl脚本,请查看--aggregate/--autoscaling选项,谢谢qkhanhpro。我将对此进行测试,并让您知道它是否有效。“聚合维度”:[[“AutoScalingGroupName”]、[“InstanceId”、“InstanceType”]]。这很有魅力@qkhanhpro-你想把它作为答案吗?嗨@qkhanhpro和@Luis,我已经尝试在我的cloudwatch代理的配置中添加了
“聚合维度”:[[“AutoScalingGroupName”],[“InstanceId”,“InstanceType”]]
,但我仍然看不到聚合的度量。你在哪里检查了日志?也许json不起作用<代码>/opt/aws/amazon cloudwatch代理/日志
{
"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"]]
}