ASG 目标跟踪策略基于两个(自定义)指标之和?

问题描述 投票:0回答:1

我希望我的目标跟踪策略基于 ASG 的 CPU 利用率。我知道 EC2 提供基本监控,包括

CPUUtilization
指标,但仅限 5 分钟一次。我还知道我可以对所有实例启用详细监控,以便以 1 分钟的间隔启用指标,但据我了解,这是一种“全有或全无”类型的事情,我必须为所有 EC2 指标(网络等)作为自定义指标(对于我的实例类型,有 16 个指标,这意味着 16 * $0.3 = $4.8 的额外成本/月/实例。如果我的假设错误,请纠正我)。

因此,我使用在 ASG 实例上运行的 CloudWatch 代理,并具有以下

amazon-cloudwatch-agent.json
配置:

...
"metrics": {
    "namespace": "AWS/EC2",
    "append_dimensions": {
        "AutoScalingGroupName": "$${aws:AutoScalingGroupName}",
        "InstanceId": "$${aws:InstanceId}"
    },
    "aggregation_dimensions": [
        ["AutoScalingGroupName"]
    ],
    "metrics_collected": {
        ...
        "cpu": {
            "measurement": [
                {
                    "name": "cpu_usage_user",
                    "rename": "CPUUtilizationUser"
                },
                {
                    "name": "cpu_usage_system",
                    "rename": "CPUUtilizationSystem"
                }
            ],
            "metrics_collection_interval": 60,
            "resources": ["*"],
            "totalcpu": true
        }
    }
}

CPUUtilizationUser
CPUUtilizationSystem
的总和与实际CPU利用率非常匹配,我只为每个实例支付2个额外的自定义指标,而不是16个(再次,如果假设错误,请纠正我)。

问题是如何将这两个自定义指标的总和用于我的 ASG 的目标跟踪策略?我知道您可以对 CloudWatch 警报使用数学表达式,但我没有看到它可用于扩展策略。

请注意,我使用 Terraform 来预置所有 AWS 资源,包括扩展策略。目前看起来是这样的:

resource "aws_autoscaling_policy" "target_tracking" {
  ...
  policy_type = "TargetTrackingScaling"

  target_tracking_configuration {
    customized_metric_specification {
      metric_name = // here I want CPUUtilizationUser + CPUUtilizationSystem basically
      namespace = "AWS/EC2"
      statistic = "Average"
      metric_dimension {
        name  = "AutoScalingGroupName"
        value = aws_autoscaling_group.application.name
      }
    }
  }
}

关于如何做到这一点有什么想法吗? 非常感谢!

amazon-web-services terraform amazon-cloudwatch autoscaling
1个回答
© www.soinside.com 2019 - 2025. All rights reserved.