使用高精度指标创建目标跟踪策略以加快响应速度 - Amazon A EC2 uto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用高精度指标创建目标跟踪策略以加快响应速度

目标跟踪支持具有秒级数据点的高分辨率 CloudWatch 指标,这些数据点的发布间隔小于一分钟。配置目标跟踪策略,通过高分辨率 CloudWatch 指标监控需求模式不稳定的应用程序的利用率,例如客户服务 APIs、直播服务、电子商务网站和按需数据处理。为了提高容量与需求匹配的精度,目标跟踪使用这种精细的监控来更快地检测和响应不断变化的需求和 EC2 实例利用率。

有关如何以高分辨率发布指标的更多信息,请参阅 Amazon CloudWatch 用户指南中的发布自定义指标。要访问和发布 EC2 指标,例如高分辨率下的 CPU 利用率,可能需要使用CloudWatch 代理

Amazon Web Services 区域

使用高分辨率指标的目标跟踪功能适用于 Amazon Web Services 区域 除外 Amazon GovCloud (US) Regions。

使用高精度指标的目标跟踪策略的工作原理

可通过定义要跟踪的指标以及该指标需要保持的目标值来创建目标跟踪策略。要根据高精度指标进行扩缩,需指定指标的名称,并将目标跟踪对该指标的观察周期设置为一个小于 60 秒的值。目前支持的最小间隔为 10 秒钟。您可以在更短的间隔内发布指标。

注意

不支持超过 60 秒的指标周期。

您可以对单个 CloudWatch 指标配置目标跟踪,也可以查询多个 CloudWatch 指标,并使用数学表达式根据这些指标创建新的单个时间序列。这两个选项都支持定义指标周期。

示例

示例 1

以下示例基于高分辨率 CloudWatch 指标创建目标跟踪策略。该指标以 10 秒级精度发布。您可以通过定义指标周期来启用目标跟踪,从而以 10 秒级粒度监控该指标。将每个 user input placeholder 替换为您自己的信息。

$ cat ~/config.json { "TargetValue": 100.0, "CustomizedMetricSpecification": { "MetricName": "MyHighResolutionMetric", "Namespace": "MyNamespace", "Dimensions": [ { "Name": "MyOptionalDimensionName", "Value": "MyOptionalMetricDimensionValue" } ], "Statistic": "Average", "Unit": "None" "Period": "10 } }
示例 2

可使用指标的数学表达式将多个指标组合成单个时间序列以进行扩缩。指标数学对于将现有指标换算成单个实例的平均值特别有用。指标换算非常重要,因为目标跟踪假设该指标与自动扩缩组的容量成反比。因此,当容量增加时,该指标应以几乎相同的比例减小。

例如,假设您有一个指标代表应用程序要处理的待处理任务。您可以使用指标数学将待处理任务数除以自动扩缩组的运行容量。Auto Scaling 以 1 分钟的粒度发布容量指标,因此该指标在小于一分钟的间隔内不会有任何值。如果想使用更高的精度进行扩缩,这可能会导致容量与待处理任务指标之间出现周期不匹配。为避免出现这种不匹配,我们建议使用 FILL 表达式,用前一分钟时间戳中记录的容量数字填充缺失值。

以下示例使用指标数学,将待处理任务指标除以容量。对于周期,我们将两个指标的周期都设置为 10 秒。由于指标按 1 分钟的间隔发布,因此我们对容量指标使用 FILL 操作。

使用指标数学修改多个指标

{ "CustomizedMetricSpecification": { "Metrics": [ { "Label": "Pending jobs to be processed", "Id": "m1", "MetricStat": { "Metric": { "MetricName": "MyPendingJobsMetric", "Namespace": "Custom", }, "Stat": "Sum" "Period": 10 }, "ReturnData": false }, { "Label": "Get the running instance capacity (matching the period to that of the m1)", "Id": "m2", "MetricStat": { "Metric": { "MetricName": "GroupInServiceInstances", "Namespace": "AWS/AutoScaling", "Dimensions": [ { "Name": "AutoScalingGroupName", "Value": "my-asg" } ] }, "Stat": "Average" "Period": 10 }, "ReturnData": false }, { "Label": "Calculate the pending job per capacity (note the use of the FILL expression)", "Id": "e1", "Expression": "m1 / FILL(m2,REPEAT)", "ReturnData": true } ] }, "TargetValue": 100 }

注意事项

使用目标跟踪和高精度指标时,请注意以下事项。

  • 为确保不会丢失可能导致不想要的自动缩放结果的数据点,您的 CloudWatch 指标必须以与您指定的时间段相同或更高的分辨率发布。

  • 将目标值定义为要为 Auto Scaling 组保留的 per-instance-per-minute指标值。如果所用指标的值会根据指标的周期而倍增,则设置适当的目标值至关重要。例如,任何基于统计的指标,例如使用 SUM 统计的请求计数或待处理任务数,会随着所选的周期而有不同的指标值。您仍然应该假设目标是根据每分钟的平均值设定的。

  • 尽管使用 Amazon A EC2 uto Scaling 不收取任何额外费用,但您必须为诸如亚马逊 EC2 实例、 CloudWatch 指标和 CloudWatch 警报之类的资源付费。在前面的示例中创建的高分辨率警报的价格与标准 CloudWatch 警报的价格不同。有关 CloudWatch 定价的更多信息,请参阅 Amazon CloudWatch 定价

  • 目标跟踪要求指标代表实例的每个 EC2 实例的平均利用率。为实现这一点,可以在目标跟踪策略配置中采用指标数学运算。将指标除以自动扩缩组的运行容量。确保用于创建单个时间序列的每个指标都定义了相同的指标周期。如果这些指标以不同间隔发布,则对间隔较大的指标使用 FILL 操作,以填充缺失的数据点。