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

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

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

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

AWS 区域

使用高精度指标的目标跟踪适用于除 AWS GovCloud (US) Regions 之外的 AWS 区域。

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

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

注意

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

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

示例

示例 1

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

$ 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 指标必须按照与指定周期相同或更高的精度发布。

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

  • 虽然使用 Amazon EC2 Auto Scaling 无额外费用,但 Amazon EC2 实例、CloudWatch 指标和 CloudWatch 警报等资源必须付费。在上例中创建的高精度警报,其价格与标准 CloudWatch 警报有所不同。有关 CloudWatch 定价的信息,请参阅 Amazon CloudWatch 定价

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