2

我创建了一个自动缩放目标和一个附加到它的策略。

AutoScalingPolicy:
    Type: AWS::ApplicationAutoScaling::ScalingPolicy
    Properties:
      PolicyName: !Join ['', [!Ref ServiceName, auto-scaling-policy]]
      PolicyType: TargetTrackingScaling
      ScalingTargetId: !Ref AutoScalingTarget
      TargetTrackingScalingPolicyConfiguration:
        PredefinedMetricSpecification:
          PredefinedMetricType: ECSServiceAverageCPUUtilization
        ScaleInCooldown: 10
        ScaleOutCooldown: 10
        # Keep things at or lower than 50% CPU utilization, for example
        TargetValue: !Ref AutoScalingTargetValue

这将创建 cloudwatch 警报:

高的: 3 datapoints within 3 minutes

低的: 15 datapoints within 15 minutes

我想将其自定义为:

高的: 1 datapoint within 1 minute

低的: 1 datapoint within 1 minute

我可以从 AWS 控制台手动执行此操作。但是,正在努力寻找一种使用 cloudformation 模板执行相同操作的方法。

4

2 回答 2

2

目标跟踪实际上没有“高”和“低”阈值。通过目标跟踪,您可以设置要尝试保持的目标 CPU 利用率百分比值,并且自动缩放会自动上下更新任务数以尝试将 CPU 利用率保持在该值。

如果您想进行更细粒度的控制,则需要使用“步进扩展策略”。这允许您设置特定值,例如“如果 CPU 百分比在我的目标 50% 的 0 到 10% 之间,则增加 1”,以及“如果 CPU 百分比在我的目标 50% 的 10% 到 20% 之间,则增加2"。

您可以在此处的可下载开源 CloudFormation 模板中查看此类步进扩展策略的示例:https ://containersonaws.com/architecture/autoscaling-service-containers/直接包含在此答案中太长了,但是您可以使用这些官方 AWS 示例模板作为您的步进扩展策略的起点。

于 2019-04-17T17:19:57.287 回答
1

虽然目标跟踪允许您指定单个值,但实际上这会在 CloudWatch 中变成两个警报。High警报将是YourMetric > YourTargetValue for X datapoints for Y minutesLow警报将是YourMetric < SomeValue for A datapoints for B minutes

于 2020-04-29T14:31:57.453 回答