使用公制数学创建目标跟踪扩展策略 - Amazon A EC2 uto Scaling

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用公制数学创建目标跟踪扩展策略

使用指标数学,您可以查询多个 CloudWatch 指标,并使用数学表达式根据这些指标创建新的时间序列。您可以在 CloudWatch 控制台中可视化生成的时间序列并将其添加到仪表板中。有关指标数学的更多信息,请参阅 Amazon CloudWatch 用户指南中的使用指标数学

以下考虑因素适用于指标数学表达式:

  • 您可以查询任何可用的 CloudWatch 指标。每个指标都是指标名称、命名空间和零个或多个维度的唯一组合。

  • 您可以使用任何算术运算符 (+-*/^)、统计函数(例如AVG或SUM)或其他 CloudWatch 支持的函数。

  • 您可以在数学表达式的公式中同时使用指标和其他数学表达式的结果。

  • 指标规范中使用的任何表达式最终都必须返回一个单个时间序列。

  • 您可以使用 CloudWatch 控制台或,验证指标数学表达式是否有效 CloudWatch GetMetricDataAPI。

注意

只有使用 AWS CLI、 AWS CloudFormation或,才能使用公制数学创建目标跟踪扩展策略SDK。此功能在控制台中尚不可用。

示例:每个实例的 Amazon SQS 队列待办事项

要计算每个实例的 Amazon SQS 队列积压情况,请计算可供从队列中检索的消息的大致数量,然后将该数字除以 Auto Scaling 组的运行容量,即处于该InService状态的实例数。有关更多信息,请参阅 基于 Amazon 的扩展策略 SQS

表达式的逻辑如下:

sum of (number of messages in the queue)/(number of InService instances)

那么您的 CloudWatch 指标信息如下所示。

ID CloudWatch 公制 Statistic 周期
m1 ApproximateNumberOfMessagesVisible Sum 1 minute
m2 GroupInServiceInstances 平均值 1 minute

您的指标数学 ID 和表达式如下所示。

ID Expression
e1 (m1)/(m2)

下图说明了该指标的架构:

使用队列的 Amazon A EC2 uto Scaling 架构图
使用该指标数学来创建目标跟踪扩展策略 (AWS CLI)
  1. 将指标数学表达式作为自定义指标规范的一部分存储在名为JSON的文件中config.json

    使用下面的示例帮助您快速开始。替换每个 user input placeholder 用你自己的信息。

    { "CustomizedMetricSpecification": { "Metrics": [ { "Label": "Get the queue size (the number of messages waiting to be processed)", "Id": "m1", "MetricStat": { "Metric": { "MetricName": "ApproximateNumberOfMessagesVisible", "Namespace": "AWS/SQS", "Dimensions": [ { "Name": "QueueName", "Value": "my-queue" } ] }, "Stat": "Sum" }, "ReturnData": false }, { "Label": "Get the group size (the number of InService instances)", "Id": "m2", "MetricStat": { "Metric": { "MetricName": "GroupInServiceInstances", "Namespace": "AWS/AutoScaling", "Dimensions": [ { "Name": "AutoScalingGroupName", "Value": "my-asg" } ] }, "Stat": "Average" }, "ReturnData": false }, { "Label": "Calculate the backlog per instance", "Id": "e1", "Expression": "m1 / m2", "ReturnData": true } ] }, "TargetValue": 100 }

    有关更多信息,请参阅TargetTrackingConfigurationAmazon A EC2 uto Scaling API 参考》。

    注意

    以下是一些其他资源,可以帮助您查找指标名称、命名空间、维度和指标 CloudWatch统计信息:

  2. 要创建此策略,请使用该JSON文件作为输入运行put-scaling-policy命令,如以下示例所示。

    aws autoscaling put-scaling-policy --policy-name sqs-backlog-target-tracking-scaling-policy \ --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \ --target-tracking-configuration file://config.json

    如果成功,此命令将返回策略的 Amazon 资源名称 (ARN) 和代表您创建ARNs的两个 CloudWatch 警报中的一个。

    { "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:228f02c2-c665-4bfd-aaac-8b04080bea3c:autoScalingGroupName/my-asg:policyName/sqs-backlog-target-tracking-scaling-policy", "Alarms": [ { "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e", "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e" }, { "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2", "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2" } ] }
    注意

    如果此命令引发错误,请确保已将 AWS CLI 本地版本更新到最新版本。