选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

使用指标数学表达式

聚焦模式
使用指标数学表达式 - Amazon A EC2 uto Scaling

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

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

以下部分提供了预测性扩缩策略的信息和示例,这些示例演示了如何在策略中使用指标数学。

了解指标数学

如果您想要做的只是聚合现有指标数据,那么 CloudWatch 指标数学可以节省向 CloudWatch 发布另一个指标的精力和成本。您可以使用 AWS 提供的任何指标,还可以使用定义为应用程序一部分的指标。例如,您可能想要计算每个实例的 Amazon SQS 队列积压。您可以从队列中获取用于检索的可用消息的大约数量,然后将该数量除以 Auto Scaling 组的运行容量来实现这一点。

有关更多信息,请参阅 Amazon CloudWatch User Guide (Amazon CloudWatch 用户指南) 中的 Using metric math (使用指标数学)。

如果您选择在预测性扩展策略中使用指标数学表达式,请考虑以下几点:

  • 指标数学运算使用指标名称、命名空间和维度键/值对指标的唯一组合的数据点。

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

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

  • 指标数学表达式可以由不同的聚合组成。但是,得到最终聚合结果的最佳实践是针对扩展指标使用 Average 以及针对负载指标使用 Sum

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

要使用指标数学,请执行以下操作:

  • 选择一个或多个 CloudWatch 指标。然后,创建表达式。有关更多信息,请参阅 Amazon CloudWatch User Guide (Amazon CloudWatch 用户指南) 中的 Using metric math (使用指标数学)。

  • 使用 CloudWatch 控制台或 CloudWatch GetMetricData API 验证指标数学表达式是否有效。

使用指标数学组合指标的预测性扩缩策略示例(AWS CLI)

有时,您可能需要首先以某种方式处理其数据,而不是直接指定指标。例如,您可能有一个从 Amazon SQS 队列中提取工作的应用程序,并且可能希望使用队列中的项目数作为预测性扩展的标准。队列中的消息数不仅仅定义您需要的实例数。因此,需要执行更多工作来创建可用于计算每个实例的积压的指标。有关更多信息,请参阅 基于 Amazon 的扩展策略 SQS

以下示例是适用于此场景的预测扩展策略示例。它指定了基于 Amazon SQS ApproximateNumberOfMessagesVisible 指标的扩展和负载指标,即可从队列中获取的用于检索的消息数量。它还使用 Amazon EC2 Auto Scaling GroupInServiceInstances 指标和数学表达式,计算扩展指标的每个实例的积压。

aws autoscaling put-scaling-policy --policy-name my-sqs-custom-metrics-policy \ --auto-scaling-group-name my-asg --policy-type PredictiveScaling \ --predictive-scaling-configuration file://config.json { "MetricSpecifications": [ { "TargetValue": 100, "CustomizedScalingMetricSpecification": { "MetricDataQueries": [ { "Label": "Get the queue size (the number of messages waiting to be processed)", "Id": "queue_size", "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 running instances)", "Id": "running_capacity", "MetricStat": { "Metric": { "MetricName": "GroupInServiceInstances", "Namespace": "AWS/AutoScaling", "Dimensions": [ { "Name": "AutoScalingGroupName", "Value": "my-asg" } ] }, "Stat": "Sum" }, "ReturnData": false }, { "Label": "Calculate the backlog per instance", "Id": "scaling_metric", "Expression": "queue_size / running_capacity", "ReturnData": true } ] }, "CustomizedLoadMetricSpecification": { "MetricDataQueries": [ { "Id": "load_metric", "MetricStat": { "Metric": { "MetricName": "ApproximateNumberOfMessagesVisible", "Namespace": "AWS/SQS", "Dimensions": [ { "Name": "QueueName", "Value": "my-queue" } ], }, "Stat": "Sum" }, "ReturnData": true } ] } } ] }

该示例返回策略的 ARN。

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-sqs-custom-metrics-policy", "Alarms": [] }

在蓝/绿部署场景中使用的预测扩缩策略示例(AWS CLI)

搜索表达式提供了一个高级选项,您可以在其中查询多个 Auto Scaling 组中的指标并对其执行数学表达式。此选项对于蓝/绿部署尤其有效。

注意

蓝/绿部署是一种部署方法,您可以在其中创建两个独立但相同的 Auto Scaling 组。只有其中一个组接收生产流量。用户流量最初定向到较早的Auto Scaling 组(“蓝色”),而新组(“绿色”)用于测试和评估应用程序或服务的新版本。测试并接受新部署后,用户流量将转移到“绿色”的 Auto Scaling 组。然后,您可以在部署成功后删除“蓝色”组。

作为蓝/绿部署的一部分创建新的 Auto Scaling 组时,每个组的指标历史记录可以自动包含在预测性扩展策略中,而无需更改其指标规范。有关更多信息,请参阅 AWS 计算博客中的将 EC2 Auto Scaling 预测性扩展策略与蓝/绿部署结合使用

以下示例策略说明了如何执行此操作。在此示例中,策略使用 Amazon EC2 发出的 CPUUtilization 指标。它使用 Amazon EC2 Auto Scaling GroupInServiceInstances 指标和数学表达式,计算每个实例的扩展指标的值。它还指定了一个容量指标规范来获取 GroupInServiceInstances 指标。

根据指定的搜索条件,搜索表达式查找多个 Auto Scaling 组中实例的 CPUUtilization。如果您稍后创建了匹配相同搜索条件的新 Auto Scaling 组,则自动包含新 Auto Scaling 组中实例的 CPUUtilization

aws autoscaling put-scaling-policy --policy-name my-blue-green-predictive-scaling-policy \ --auto-scaling-group-name my-asg --policy-type PredictiveScaling \ --predictive-scaling-configuration file://config.json { "MetricSpecifications": [ { "TargetValue": 25, "CustomizedScalingMetricSpecification": { "MetricDataQueries": [ { "Id": "load_sum", "Expression": "SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" ASG-myapp', 'Sum', 300))", "ReturnData": false }, { "Id": "capacity_sum", "Expression": "SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceInstances\" ASG-myapp', 'Average', 300))", "ReturnData": false }, { "Id": "weighted_average", "Expression": "load_sum / capacity_sum", "ReturnData": true } ] }, "CustomizedLoadMetricSpecification": { "MetricDataQueries": [ { "Id": "load_sum", "Expression": "SUM(SEARCH('{AWS/EC2,AutoScalingGroupName} MetricName=\"CPUUtilization\" ASG-myapp', 'Sum', 3600))" } ] }, "CustomizedCapacityMetricSpecification": { "MetricDataQueries": [ { "Id": "capacity_sum", "Expression": "SUM(SEARCH('{AWS/AutoScaling,AutoScalingGroupName} MetricName=\"GroupInServiceInstances\" ASG-myapp', 'Average', 300))" } ] } } ] }

该示例返回策略的 ARN。

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-blue-green-predictive-scaling-policy", "Alarms": [] }
隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。