使用高分辨率指标创建目标跟踪策略以加快响应速度 - 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 组的容量成反比。因此,当容量增加时,该指标的减少比例应几乎相同。

例如,假设您有一个指标来表示您的应用程序要处理的待处理任务。您可以使用公制数学将待处理任务除以 Auto Scaling 组的运行容量。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": "GroupInService", "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实例的平均利用率。为此,您可以使用指标数学运算作为目标跟踪策略配置的一部分。将您的指标除以 Auto Scaling 组的运行容量。确保为用于创建单个时间序列的每个指标定义相同的指标周期。如果这些指标以不同的间隔发布,请对间隔较高的指标使用FILL操作来填补缺失的数据点。