

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 為 Amazon ECS 評估預測性擴展政策
<a name="predictive-scaling-graphs"></a>

使用預測性擴展政策來擴展服務之前，請先在 Amazon ECS 主控台中檢閱建議及政策的其他資料。這很重要，因為您不希望預測擴展政策在您知道其預測準確之前擴展實際容量。

如果是新服務，需要 24 小時才能建立第一個預測。

 AWS 建立預測時，會使用歷史資料。如果服務尚無足夠的最新歷史資料，預測性擴展可能會使用從目前可用的歷史彙總資料建立的彙總資料來暫時回填預測。預測會在政策建立日期前的兩週內回填。

## 檢視您的預測擴展建議
<a name="view-predictive-scaling-recommendations"></a>

為了獲得有效的分析，服務自動擴展功能應具有至少兩個可進行比較的預測性擴展政策。(不過，您仍然可以檢閱單一政策的問題清單。) 建立多個政策時，您可以根據使用不同指標的政策，評估使用一個指標的政策。您也可以評估不同目標值和指標組合的影響。建立預測性擴展政策之後，Amazon ECS 會立即開始評估哪些政策可以更好地擴展群組。

**在 Amazon ECS 主控台中檢視建議**

1. 開啟主控台，網址為 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)。

1. 在**叢集**頁面上，選擇叢集。

1. 在「叢集詳細資訊」頁面上的**服務**區段中，選擇所需服務。

   服務資訊頁面隨即顯示。

1. 選擇**服務自動擴展**。

1. 選擇預測性擴展政策，然後選擇**動作**、**預測性擴展**、**檢視建議**。

   您可以檢視政策的詳細資訊以及我們的建議。該建議會告訴您使用預測擴展政策的結果是否優於不使用它。

   如果您不確定預測擴展政策是否適合您的群組，請檢閱**可用性影響**和**成本影響**欄，以選擇正確的政策。每一欄的資訊都會說明政策的影響。
   + **可用性影響**：說明政策是否會佈建足夠的任務來處理工作負載，以避免對可用性造成負面影響 (相較於不使用該政策)。
   + **成本影響**：說明政策是否不會過度佈建任務，以避免對成本造成負面影響 (相較於不使用該政策)。如果過度佈建比較嚴重，服務就會出現使用率過低或閒置情況，這只會增加成本影響。

   如果您有多個政策，則以較低成本提供最多可用性優勢的政策名稱旁會顯示**最佳預測**標籤。可用性影響會獲得更多加權。

1. (選用) 若要選取建議結果所需的期間，請從**評估期間**下拉式清單中選擇您偏好的值：**2 天**、**1 週**或 **2 週**。根據預設，評估期間是最近兩週。較長的評估期間會為建議結果提供更多資料點。不過，如果負載模式發生變更 (例如在一段異常需求期間後)，新增更多資料點可能無法改善結果。在這種情況下，您可以查看最新資料以獲得更有針對性的建議。

**注意**  
只會針對處於**僅預測**模式的政策產生建議。當政策在整個評估期間都處於**僅預測**模式時，建議功能的效果會更好。如果您在**預測和擴展**模式中啟動政策，並於稍後將其切換至**僅預測**模式，則該政策的問題清單可能會有偏差。這是因為該政策已經為實際容量做出了貢獻。

## 檢閱預測擴展監控圖表
<a name="review-predictive-scaling-monitoring-graphs"></a>

在主控台中，您可以檢閱前幾天、前幾週或前幾個月的預測，以視覺化方式呈現政策在一段時間內的表現。在決定是否允許政策擴展實際任務數量時，您也可以使用這些資訊來評估預測的準確性。

**在 Amazon ECS 主控台中檢閱預測性擴展監控圖表**

1. 開啟主控台，網址為 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)。

1. 在**叢集**頁面上，選擇叢集。

1. 在「叢集詳細資訊」頁面上的**服務**區段中，選擇所需服務。

   服務資訊頁面隨即顯示。

1. 選擇**服務自動擴展**。

1. 選擇預測性擴展政策，然後選擇**動作**、**預測性擴展**、**檢視圖表**。

1. 在**監控**區段中，您可以根據實際值檢視政策在過去和未來的負載和容量預測。**負載**圖表會顯示所選負載指標的負載預測與實際值。**容量**圖表會顯示政策預測的任務數量。它還包括實際啟動的任務數量。垂直線會將歷史值與未來預測隔開。建立政策後，這些圖表很快就可以使用。

1. (選用) 若要變更圖表中顯示的歷史資料量，請從頁面頂端的**評估期間**下拉式清單中選擇您偏好的值。評估期間不會以任何方式轉換此頁面上的資料。它只會變更顯示的歷史資料量。

**比較**負載**圖表中的資料**  
每條水平線代表每間隔一小時報告的一組不同資料點：

1. **實際觀察到的負載**會使用所選負載指標的 SUM 統計資料來顯示過去的每小時總負載。

1. **政策預測的負載**會顯示每小時的負載預測。此預測是基於前兩週的實際負載觀察結果。

**比較**容量**圖表中的資料**  
每條水平線代表每間隔一小時報告的一組不同資料點：

1. **實際觀察到的任務數量**會顯示 Amazon ECS 服務過去的實際容量，這取決於其他擴展政策與所選時段內有效的群組大小下限。

1. **政策預測的容量**會顯示政策處於**預測和擴展**模式時，可預期在每小時開始時獲得的基準容量。

1. **推斷的所需任務數量**會顯示服務中的理想任務數量，以將擴展指標維持在所選目標值。

1. **任務數量下限**會顯示服務中的任務數量下限。

1. **容量上限**會顯示服務中的任務數量上限。

為了計算推斷的所需容量，我們首先假設以指定的目標值平均使用每項任務。實際上，並不會平均使用任務數量。但是，假設使用率均勻地分佈在任務之間，我們就可以對所需容量進行可能的估算。然後，所需任務數量的計算結果會與用於預測性擴展政策的擴展指標成反比。換句話說，隨著任務數量增加，擴展指標會以相同的速率減少。例如，如果任務數量加倍，擴展指標必定會減半。

推斷的所需容量公式：

 `sum of (actualServiceUnits*scalingMetricValue)/(targetUtilization)`

例如，我們使用特定一小時的 `actualServiceUnits` (`10`) 和 `scalingMetricValue` (`30`)。然後，我們會使用您在預測擴展政策中指定的 `targetUtilization` (`60`)，並計算同一小時內推斷的所需容量。這會傳回值 `5`。這表示 5 是維持容量與擴展指標目標值正好成反比所需的推斷容量。

**注意**  
您可以使用各種控制桿來調整和改善應用程式的成本節省效益和可用性。  
您可以針對基準容量使用預測擴展，並使用動態擴展來處理額外的容量。動態擴展會與預測擴展分開運作，可根據目前的使用率進行縮減和擴增。首先，Amazon ECS 會為每個非排程擴展政策計算建議的任務數量。然後，它會根據提供最多任務數量的政策進行擴展。
為了在負載減少時允許進行縮減，服務應一律至少具有一個動態擴展政策，並啟用縮減部分。
您可以確保您的最小和最大容量沒有太大限制，以提高擴展效能。如果政策的建議任務數量不在容量下限與上限範圍內，將無法進行縮減與橫向擴充。

# 使用 CloudWatch 監控 Amazon ECS 的預測性擴展指標
<a name="predictive-scaling-monitoring"></a>

您可以使用 Amazon CloudWatch 監控資料以進行預測性擴展。預測性擴展政策會收集用於預測未來負載的資料。收集的資料會定期自動儲存在 CloudWatch 中，並可用於視覺化政策隨時間執行的表現。您還可以建立 CloudWatch 警示，以便在效能指標變更超出您定義的限制時通知您。

## 視覺化歷史預測資料
<a name="visualize-historical-forecast-data"></a>

您可以在 CloudWatch 中檢視預測性擴展政策的負載預測資料，這些資料有助於在單一圖表中根據其他 CloudWatch 指標視覺化預測。透過檢視更廣泛的時間範圍，還可以看到隨時間變化的趨勢。您可以存取長達 15 個月的歷史指標，以更加了解政策的執行狀況。

**使用 CloudWatch 主控台檢視歷史預測資料**

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 在導覽窗格中，選擇 **Metrics** (指標)，然後選擇 **All metrics** (所有指標)。

1. 選擇**應用程式自動擴展**指標命名空間。

1. 選擇**預測性擴展負載預測**。

1. 在搜尋欄位中，輸入預測性擴展政策的名稱或者 Amazon ECS 服務群組的名稱，然後按 Enter 篩選結果。

1. 若要將指標圖形化，請勾選指標旁的核取方塊。若要變更圖形的名稱，請選擇鉛筆圖示。若要變更時間範圍，請選取一個預先定義的值，或選擇 **custom (自訂)**。如需詳細資訊，請參閱《Amazon CloudWatch 使用者指南》中的[建立指標圖表](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/graph_a_metric.html)。

1. 若要變更統計數字，請選擇 **Graphed metrics** (圖表化指標) 索引標籤。選擇欄位標題或個別的值，然後選擇不同的統計資料。儘管您可以為每個指標選擇任何統計資料，但並非所有統計資料都適用於 **PredictiveScalingLoadForecast** 指標。例如，**Average** (平均值)、**Minimum** (最小值) 和 **Maximum** (最大值) 統計資料有用，但是 **Sum** (總和) 統計資料無用。

1. 若要將其他指標新增到圖表，請在 **Browse** (瀏覽) 下，選擇 **All** (所有)，找到特定指標，然後選取旁邊的核取方塊。您最多可新增 10 個指標。

1. (選用) 若要將圖表新增至 CloudWatch 儀表板，請選擇 **Actions** (動作)、**Add to dashboard** (新增至儀表板)。

## 使用指標數學建立準確度指標
<a name="create-accuracy-metrics"></a>

利用指標數學，可查詢多個 CloudWatch 指標，並使用數學表達式根據這些指標來建立新的時間序列。您可以在 CloudWatch 主控台視覺化產生的時間序列，並將其新增至儀表板。如需有關指標數學的詳細資訊，請參閱《Amazon CloudWatch 使用者指南》中的[使用指標數學](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html)。

使用指標數學，您可以透過不同的方式繪製服務自動擴展功能為預測性擴展而產生的資料圖表。這可協助您監控一段時間內的政策績效，並協助您瞭解是否可以改善指標組合。

例如，您可以使用指標數學表達式來監控[平均絕對誤差百分比](https://en.wikipedia.org/wiki/Mean_absolute_percentage_error) (MAPE)。MAPE 指標有助於監控預測值與指定預測期間觀察到的實際值之間的差異。MAPE 值的變化可指示政策的績效是否隨著應用程式性質的變化在一段時間內而降低。MAPE 的增加表示預測值與實際值之間的差距更大。

**範例：指標數學表達式**

如果要開始使用此類圖表，您可以建立類似於以下範例中所示的指標數學表達式。



`MetricDataQueries` 有一個指標資料查詢結構陣列,而不是單一的指標。`MetricDataQueries` 中的每個項目都會取得指標或執行數學表達式。第一項，`e1`，是數學表達式。指定的表達式將 `ReturnData` 參數設定為 `true`，最終產生單一時間序列。對於所有其他指標，`ReturnData` 值為 `false`。

在此範例中，指定的表達式會使用實際值和預測值作為輸入值，並傳回新指標 (MAPE)。`m1` 是包含實際負載值的 CloudWatch 指標 (假設 CPU 使用率是針對名為 `my-predictive-scaling-policy` 的政策最初指定的負載指標)。`m2` 是包含預測負載值的 CloudWatch 指標。MAPE 指標的數學語法如下：

*Average of (abs ((Actual - Forecast)/(Actual)))*

### 視覺化您的準確度指標並設定警示
<a name="visualize-accuracy-metrics-set-alarms"></a>

若要視覺化準確度指標資料，請選取 CloudWatch 主控台中的 **Metrics** (指標) 索引標籤。您可以從那裡繪製資料圖表。如需詳細資訊，請參閱《Amazon CloudWatch 使用者指南》中的[將數學表達式新增到 CloudWatch 圖表](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html#adding-metrics-expression-console)。

您也可以在 **Metrics** (指標) 區段中，對您監控的指標設定警示。在 **Graphed metrics** (圖表化指標) 索引標籤上，選取 **Actions** (動作) 資料欄下的 **Create alarm** (建立警示) 圖示。**Create alarm** (建立警示) 圖示表示為一個小鐘。如需詳細資訊與通知選項，請參閱 *Amazon CloudWatch User Guide* 中的 [Creating a CloudWatch alarm based on a metric math expression](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Create-alarm-on-metric-math-expression.html) 與 [Notifying users on alarm changes](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Notify_Users_Alarm_Changes.html)。

或者，您可以使用 [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html) 和 [PutMetricAlarm](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_PutMetricAlarm.html) 利用指標數學來執行計算，並根據輸出建立警示。