本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
评估预测性扩展策略
在使用预测性扩展策略扩展您的自动扩缩组之前,请在 Amazon EC2 Auto Scaling 控制台中查看您策略的建议和其他数据。这很重要,因为在确定预测准确之前,您不希望使用预测扩展策略来扩展实际容量。
如果自动扩缩组是新的,则需要 24 小时的时间让 Amazon EC2 Auto Scaling 创建第一个预测。
当 Amazon EC2 Auto Scaling 创建预测时,它使用历史数据。如果您的自动扩缩组还没有太多最近的历史数据,Amazon EC2 Auto Scaling 可能会使用从当前可用的历史聚合中创建的聚合数据临时回填预测。预测会在策略创建日期前最多回填两周。
查看您的预测性扩展建议
为了进行有效的分析,Amazon EC2 Auto Scaling 应至少有两个预测性扩展策略可供比较。(但您仍可以查看单个策略的调查结果。) 创建多个策略时,您可以对使用一个指标的策略和使用另一个指标的策略进行评估。您还可以评估不同目标值和指标组合的影响。创建预测性扩展策略后,Amazon EC2 Auto Scaling 会立即开始评估哪种策略可以更好地扩展您的组。
在 Amazon EC2 Auto Scaling 控制台中查看您的建议
访问 https://console.aws.amazon.com/ec2/
,打开 Amazon EC2 控制台,然后从导航窗格中选择 Auto Scaling Groups(Auto Scaling 组)。 -
选中 Auto Scaling 组旁边的复选框。
这时将在页面底部打开一个拆分窗格。
-
在 Auto Scaling 选项卡的预测性扩展策略下,您可以查看有关策略的详细信息以及我们的建议。该建议告诉您预测性扩展策略是否比不使用预测性扩展策略做得更好。
如果您不确定预测性扩展策略是否适合您的组,请查看可用性影响和成本影响列以选择正确的策略。每列的信息告诉您该策略的影响。
-
可用性影响:描述与不使用策略相比,该策略是否可以通过预置足够的实例来处理工作负载,从而避免对可用性的负面影响。
-
成本影响:描述与不使用策略相比,该策略是否可以通过不过度预置实例而避免对您的成本产生负面影响。过度预置会导致您的实例未得到充分利用或处于闲置状态,这只会增加对成本的影响。
如果您有多个策略,则在以较低成本提供最大可用性优势的策略名称旁边显示最佳预测标签。对可用性的影响给予了更多的重视。
-
-
(可选)要为建议结果选择所需的时间段,请从评估期下拉列表中选择您的首选值:2 天、1 周、2 周、4 周、6 周或 8 周。默认情况下,评估期为过去两周。更长的评估期可为建议结果提供更多的数据点。但是,如果您的负载模式发生了变化,例如在需求异常之后,添加更多数据点可能不会改善结果。在这种情况下,您可以通过查看最新数据来获得更有针对性的建议。
注意
仅为处于仅预测模式的策略生成建议。当策略在整个评估期内处于仅预测模式时,建议功能的效果会更好。如果您在预测和扩展模式下启动策略,稍后将其切换为仅预测模式,则该策略的调查结果可能会有偏差。这是因为该策略已经为实际容量做出了贡献。
查看预测性扩展监控图表
在 Amazon EC2 Auto Scaling 控制台中,您可以查看前几天、几周或几个月的预测,以便可视化策略在一段时间内的表现如何。在决定是否让策略扩展您的实际容量时,您还可以使用这些信息来评估预测的准确性。
在 Amazon EC2 Auto Scaling 控制台中查看预测性扩展监控图表
-
从预测性扩展策略列表中选择一个策略。
-
在监控部分中,您可以根据实际值查看策略对过去和未来负载和容量的预测。负载图表显示所选负载指标的负载预测和实际值。容量图表显示策略预测的实例数量。它还包括启动实例的实际数量。垂直线将历史值与未来预测分开。创建策略后不久,这些图表可用。
-
(可选)要更改图表中显示的历史数据量,请从页面顶部的评估期下拉列表中选择您的首选值。评估期不会以任何方式转换此页面上的数据。它只会更改显示的历史数据量。
下图显示了多次应用预测时的负载和容量图表。预测性扩展会根据您的历史负载数据来预测负载。应用程序生成的负载由自动扩缩组中每个实例的 CPU 利用率、网络输入/输出、收到的请求或自定义指标的总和来表示。预测性扩展会根据负载预测和您希望扩展指标达到的目标利用率来计算未来的容量需求。
比较负载图表中的数据
每条水平线代表一小时间隔内报告的一组不同的数据点:
-
实际观测负载使用所选负载指标的 SUM 统计数据来显示过去每小时的总负载。
-
策略预测的负载显示每小时的负载预测。该预测基于前两周的实际负载观测结果。
比较容量图表中的数据
每条水平线代表一小时间隔内报告的一组不同的数据点:
-
实际观测容量显示您的自动扩缩组过去的实际容量,这取决于您的其他扩展策略和所选时间段内有效的最小组大小。
-
策略预测的容量显示当策略处于预测和扩展模式时,您在每个小时开始时期望拥有的基准容量。
-
推断的所需容量显示将扩展指标维持在您所选择目标值的理想容量。
-
最小容量显示自动扩缩组的最小容量。
-
最大容量显示自动扩缩组的最大容量。
为了计算推断的所需容量,我们首先假设每个实例在指定目标值下的利用率相等。实际上,实例的利用率并不均等。但是,通过假设实例之间的利用率分布均匀,我们可以对所需的容量进行可能的估计。然后计算容量需求与您在预测性扩展策略中使用的扩展指标成反比。换句话说,随着容量的增加,扩展指标会以相同的速率减少。例如,如果容量翻倍,则扩展指标必定会减少一半。
推断的所需容量的公式:
sum of
(actualCapacityUnits*scalingMetricValue)/(targetUtilization)
例如,我们在给定一小时内使用 actualCapacityUnits
(10
) 和 scalingMetricValue
(30
)。然后,我们采用您在预测扩展策略 (60
) 中指定的 targetUtilization
,计算同一小时的推断所需容量。这会返回值 5
。这意味着 5 是推断出的维持容量所需的容量,与扩展指标的目标值成反比。
注意
您可以使用各种杠杆来调整和提高应用程序的成本节约和可用性。
-
您可以使用预测性扩展来计算基准容量,使用动态扩展来处理额外的容量。动态扩展独立于预测性扩展,会根据当前的利用率向内和向外扩展。首先,Amazon EC2 Auto Scaling 计算每个动态扩展策略的建议实例数。然后,它会根据提供最多实例的策略进行扩展。
-
要允许在负载减少时进行横向缩减,您的自动扩缩组应始终至少有一个启用了横向缩减部分的动态扩展策略。
-
您可以通过确保最小和最大容量不太严格来提高扩展性能。如果策略中包含的推荐实例数不在最小和最大容量范围内,则将阻止横向缩减和横向扩展。
使用监控预测性扩展指标 CloudWatch
根据您的需求,您可能更愿意从亚马逊 CloudWatch 而不是从 Amazon EC2 Auto Scaling 控制台访问用于预测性扩展的监控数据。创建预测性扩缩策略后,该策略将收集用于预测未来负载和容量的数据。收集这些数据后,系统会定期自动将其存储。 CloudWatch 然后,您可以使用可视 CloudWatch 化策略在一段时间内的执行情况。您还可以创建 CloudWatch 警报,以便在绩效指标变化超出您在中定义的限制时通知您 CloudWatch。
可视化显示历史预测数据
您可以在中查看预测性扩展策略的负载和容量预测数据 CloudWatch。在单个图表中根据其他 CloudWatch指标对预测进行可视化时,这可能很有用。您还可以查看更大的时间范围,以了解长期的趋势,这也非常有益。您可以访问长达 15 个月的历史指标,以更好地了解您的策略性能。
有关更多信息,请参阅 预测性扩缩指标和维度。
使用 CloudWatch 控制台查看历史预测数据
打开 CloudWatch 控制台,网址为 https://console.aws.amazon.com/cloudwatch/
。 -
在导航窗格中,选择 Metrics(指标),然后选择 All metrics(所有指标)。
-
选择 Auto Scaling(自动扩缩)指标命名空间。
-
选择下面的一个选项,以查看负载预测或容量预测指标:
-
Predictive Scaling Load Forecasts(预测性扩缩负载预测)
-
Predictive Scaling Capacity Forecasts(预测性扩缩容量预测)
-
-
在搜索字段中,输入预测性扩缩策略的名称或自动扩缩组的名称,然后按 Enter 键以筛选结果。
-
要为指标绘制图表,请选中该指标旁的复选框。要更改图表的名称,请选择铅笔图标。要更改时间范围,请选择某个预定义的值或选择 custom。有关更多信息,请参阅 Amazon CloudWatch 用户指南中的绘制指标图表。
-
要更改统计数据,请选择 Graphed metrics(已绘制图表指标)选项卡。选择列标题或单个值,然后选择其他统计数据。尽管您可以为每个指标选择任何统计数据,但并非所有统计数据都对PredictiveScalingLoadForecast和PredictiveScalingCapacityForecast指标有用。例如,Average(平均)、Minimum(最小)和 Maximum(最大)统计数据非常有用,但 Sum(总和)统计数据用处不大。
-
要在图表中添加其他指标,请在 All(全部)下选择 Browse(浏览),找到特定的指标,然后选中它旁边的复选框。您最多可以添加 10 个指标。
例如,要将 CPU 利用率的实际值添加到图表中,请选择 EC2 命名空间,然后选择 By Auto Scaling Group(按自动扩缩组)。然后,选中 CPUUtilization 指标和特定自动扩缩组旁的复选框。
-
(可选)要将图表添加到 CloudWatch 仪表板,请选择操作,然后选择添加到仪表板。
使用指标数学创建准确度指标
使用指标数学,您可以查询多个 CloudWatch 指标,并使用数学表达式根据这些指标创建新的时间序列。您可以在 CloudWatch 控制台上可视化生成的时间序列并将其添加到仪表板中。有关指标数学的更多信息,请参阅 Amazon CloudWatch 用户指南中的使用指标数学。
借助指标数学,您能够以不同方式绘制 Amazon EC2 Auto Scaling 为预测性扩缩而生成的数据。这可帮助您监控随时间变化的策略性能,并帮助您了解是否可以改进指标组合。
例如,您可以使用指标数学表达式来监控平均绝对百分比误差
示例:指标数学表达式
要开始使用此类图表,您可以创建一个与下例中类似的指标数学表达式。
{ "MetricDataQueries": [ { "Expression": "TIME_SERIES(AVG(ABS(m1-m2)/m1))", "Id": "e1", "Period": 3600, "Label": "
MeanAbsolutePercentageError
", "ReturnData": true }, { "Id": "m1", "Label": "ActualLoadValues
", "MetricStat": { "Metric": { "Namespace": "AWS/EC2", "MetricName": "CPUUtilization
", "Dimensions": [ { "Name": "AutoScalingGroupName", "Value": "my-asg
" } ] }, "Period": 3600, "Stat": "Sum" }, "ReturnData": false }, { "Id": "m2", "Label": "ForecastedLoadValues
", "MetricStat": { "Metric": { "Namespace": "AWS/AutoScaling", "MetricName": "PredictiveScalingLoadForecast", "Dimensions": [ { "Name": "AutoScalingGroupName", "Value": "my-asg
" }, { "Name": "PolicyName", "Value": "my-predictive-scaling-policy
" }, { "Name": "PairIndex", "Value": "0" } ] }, "Period": 3600, "Stat": "Average" }, "ReturnData": false } ] }
这不是单个指标,而是一组针对 MetricDataQueries
的指标数据查询结构。MetricDataQueries
中的每一项都会获取一个指标或执行一个数学表达式。第一项 e1
是一个数学表达式。指定的表达式将 ReturnData
参数设置为 true
,这最终会生成单个时间序列。对于所有其他指标,ReturnData
值为 false
。
在示例中,指定的表达式使用实际值和预测值作为输入,并返回新的指标 (MAPE)。 m1
是包含实际负载值的 CloudWatch指标(假设 CPU 利用率是最初为名为的策略指定的负载指标my-predictive-scaling-policy
)。 m2
是包含预测负荷值的 CloudWatch指标。MAPE 指标的数学语法如下所示:
(((实际值 - 预测值)/(实际值)) 的绝对值) 的平均值
可视化显示准确度指标并设置警报
要可视化准确度指标数据,请在 CloudWatch 控制台中选择 Metrics 选项卡。您可以在此处绘制数据图表。有关更多信息,请参阅 Amazon CloudWatch 用户指南中的向 CloudWatch 图表添加数学表达式。
您还可以在 Metrics(指标)部分为您监控的指标设置警报。在 Graphed metrics(绘制的指标)选项卡中,选择 Actions(操作)列下的 Create alarm(创建警报)。Create alarm(创建警报)图标用一个小铃铛表示。有关更多信息和通知选项,请参阅 Amazon 用户指南中的基于指标数学表达式创建警报和通知 CloudWatch 用户警报更改。 CloudWatch
或者,您可以使用GetMetricData和PutMetricAlarm使用公制数学进行计算,并根据输出创建警报。