

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

# 使用高解析度指標加快自動擴展速度
<a name="target-tracking-faster-auto-scaling"></a>

根據預設，Amazon ECS 會以 60 秒解析度發佈 `CPUUtilization`和 `MemoryUtilization`指標。您可以設定 20 秒的解析度，以加快服務自動擴展的速度。

下列高解析度預先定義的指標可用於目標追蹤擴展政策：


| PredefinedMetricType | 說明 | 
| --- | --- | 
| ECSServiceAverageCPUUtilizationHighResolution | 20 秒解析度的平均 CPU 使用率 | 
| ECSServiceAverageMemoryUtilizationHighResolution | 20 秒解析度的平均記憶體使用率 | 

## 使用高解析度指標建立新的服務，以加快自動擴展速度
<a name="faster-auto-scaling-create-service"></a>

### 主控台
<a name="faster-auto-scaling-create-service-console"></a>

1. 在**叢集**頁面上，選擇您要在其中建立服務的叢集。

1. 在**服務**區段中，選擇**建立**。

1. 在建立服務表單的**監控組態**區段中，選擇**新增指標組態**。

1. 針對**指標名稱**，選取您想要以高解析度收集的指標。選擇 `CPUUtilization` 或 `MemoryUtilization`。

1. 針對**解析度 （秒）**，選取 **20**。

1. （選用） 若要以高解析度新增兩個指標，請再次選擇**新增指標組態**，並為其他指標重複前兩個步驟。

1. 在**服務自動擴展**區段中，選擇**使用服務自動擴展**。

1. 在**任務數量下限**欄位中，輸入供服務自動擴展功能使用的任務數量下限。所需的計數不會低於此計數。

1. 在**任務數量上限**中，輸入供服務自動擴展功能使用的任務數量上限。所需的計數不會高於此計數。

1. 針對 **Scaling policy type** (擴展政策類型)，選擇 **Target tracking** (目標追蹤)。

1. 針對**指標類型**，選取對應的高解析度指標。例如，`ECSServiceAverageCPUUtilizationHighResolution`如果您`CPUUtilization`設定為 20 秒解析度，或者`ECSServiceAverageMemoryUtilizationHighResolution`如果您`MemoryUtilization`設定為 20 秒解析度，請選擇 。

1. 針對**目標值**，輸入目標使用率百分比。服務自動擴展會擴展您的容量，直到平均使用率達到目標值，或達到您指定的任務數量上限為止。

1. 在**其他設定**下，設定下列項目：

   1. 在**橫向擴充冷卻時間**欄位中，輸入等待上一個橫向擴充活動生效的時間 (以秒為單位)。

   1. 在**縮減冷卻時間**欄位中，輸入一個縮減活動完成之後、另一個縮減活動開始之前的時間 (以秒為單位)。

1. 選擇**建立**以建立服務。

### AWS CLI
<a name="faster-auto-scaling-create-service-cli"></a>

1. 使用 [create-service ](https://docs.aws.amazon.com/cli/latest/reference/ecs/create-service.html)命令建立具有監控組態的服務。

   ```
   aws ecs create-service --region {{us-east-1}} \
       --cluster {{my-cluster}} \
       --service-name {{my-service}} \
       --task-definition {{my-app:1}} \
       --desired-count 2 \
       --monitoring "metricConfigurations=[{metricNames=[CPUUtilization,MemoryUtilization],resolutionSeconds=20}]"
   ```

1. 使用 [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 命令，將服務註冊為可擴展的目標。

   ```
   aws application-autoscaling register-scalable-target \
       --service-namespace ecs \
       --resource-id service/{{my-cluster}}/{{my-service}} \
       --scalable-dimension ecs:service:DesiredCount \
       --min-capacity {{1}} \
       --max-capacity {{10}} \
       --region {{us-east-1}}
   ```

1. 使用 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 命令，使用高解析度預先定義的指標建立目標追蹤擴展政策。

   ```
   aws application-autoscaling put-scaling-policy \
       --service-namespace ecs \
       --resource-id service/{{my-cluster}}/{{my-service}} \
       --scalable-dimension ecs:service:DesiredCount \
       --policy-name {{my-highres-cpu-policy}} \
       --policy-type TargetTrackingScaling \
       --target-tracking-scaling-policy-configuration '{
           "TargetValue": {{50.0}},
           "PredefinedMetricSpecification": {
               "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution"
           }
       }' \
       --region {{us-east-1}}
   ```

1. 驗證政策是否使用 [describe-scaling-policies](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scaling-policies.html) 命令建立。

   ```
   aws application-autoscaling describe-scaling-policies \
       --service-namespace ecs \
       --resource-id service/{{my-cluster}}/{{my-service}} \
       --scalable-dimension ecs:service:DesiredCount \
       --region {{us-east-1}}
   ```

## 更新現有服務以使用高解析度指標，以加快自動擴展速度
<a name="faster-auto-scaling-update-service"></a>

更新現有服務以使用高解析度指標來加快服務自動擴展速度，這需要兩個步驟。您必須先更新監控解析度，這會觸發服務部署。部署成功完成且所有任務發出 20 秒解析度的指標後，您就可以設定高解析度擴展政策。

**重要**  
如果您的服務先前使用 60 秒指標解析度，只有在您將服務更新為使用 20 秒指標解析度且服務部署完成之後，才能在 Amazon ECS 主控台上使用適用於擴展政策的高解析度指標。

### 主控台
<a name="faster-auto-scaling-update-service-console"></a>

**步驟 1：更新監控解決方案**  


1. 在**叢集**頁面上，選擇包含您要更新之服務的叢集。

1. 在**服務**區段中，選取服務，然後選擇**更新**。

1. 在更新服務表單的**監控組態**區段中，選擇**新增指標組態**。

1. 針對**指標名稱**，選取您想要以高解析度收集的指標。選擇 `CPUUtilization` 或 `MemoryUtilization`。

1. 針對**解析度 （秒）**，選取 **20**。

1. （選用） 若要以高解析度新增兩個指標，請再次選擇**新增指標組態**，並為其他指標重複前兩個步驟。

1. 選擇**更新**以提交變更。這會觸發服務部署。

1. 等待部署完成。您可以在**部署**索引標籤的服務詳細資訊頁面上監控進度。
**注意**  
高解析度擴展指標選項會在服務自動擴展區段中呈現灰色，直到部署成功且所有任務都以 20 秒解析度發出。

**步驟 2：設定高解析度擴展政策**  


部署完成後，請使用下列其中一種方法設定擴展政策：

選項 A：服務詳細資訊頁面  

1. 在服務詳細資訊頁面上，選擇**服務自動擴展**索引標籤。

1. 選擇**建立擴展政策** （或編輯現有政策）。

1. 針對 **Scaling policy type** (擴展政策類型)，選擇 **Target tracking** (目標追蹤)。

1. 針對**指標類型**，選取高解析度指標。例如 `ECSServiceAverageCPUUtilizationHighResolution` 或 `ECSServiceAverageMemoryUtilizationHighResolution`。

1. 針對**目標值**，輸入目標使用率百分比。

1. 在**其他設定**下，設定下列項目：

   1. 在**橫向擴充冷卻時間**欄位中，輸入等待上一個橫向擴充活動生效的時間 (以秒為單位)。

   1. 在**縮減冷卻時間**欄位中，輸入一個縮減活動完成之後、另一個縮減活動開始之前的時間 (以秒為單位)。

1. 選擇**建立擴展政策**。

選項 B：更新服務表單  

1. 在服務詳細資訊頁面上，選擇**更新**。

1. 在**服務自動擴展**區段中，選擇**使用服務自動擴展** （如果尚未啟用）。

1. 針對**任務數量下限**，輸入下限。

1. 針對**任務數量上限**，輸入上限。

1. 針對 **Scaling policy type** (擴展政策類型)，選擇 **Target tracking** (目標追蹤)。

1. 對於**指標類型**，選取高解析度指標 （現在在部署完成後啟用）。

1. 針對**目標值**，輸入目標使用率百分比。

1. **在其他設定**下，設定**橫向擴展冷卻時間和****橫向擴展冷卻時間**。

1. 選擇**更新**以提交變更。

### AWS CLI
<a name="faster-auto-scaling-update-service-cli"></a>

**步驟 1：更新監控解決方案**  


1. 使用 update[-service 命令以監控組態更新服務](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html)。

   ```
   aws ecs update-service --region {{us-east-1}} \
       --cluster {{my-cluster}} \
       --service {{my-service}} \
       --monitoring "metricConfigurations=[{metricNames=[CPUUtilization,MemoryUtilization],resolutionSeconds=20}]"
   ```

1. 等待部署完成。您可以使用 [describe-services](https://docs.aws.amazon.com/cli/latest/reference/ecs/describe-services.html) 命令監控進度，並檢查部署狀態。

   ```
   aws ecs describe-services --region {{us-east-1}} \
       --cluster {{my-cluster}} \
       --services {{my-service}}
   ```

1. 部署完成後，請描述 服務修訂，確認監控組態處於作用中狀態。從`describe-services`輸出取得作用中的服務修訂版 ARN，然後執行：

   ```
   aws ecs describe-service-revisions --region {{us-east-1}} \
       --service-revision-arns {{arn:aws:ecs:us-east-1:012345678910:service-revision/my-cluster/my-service/1234567890123456789}}
   ```

   確認監控組態出現在回應中：

   ```
   {
       "serviceRevisions": [
           {
               ...
               "monitoring": {
                   "metricConfigurations": [
                       {
                           "metricNames": ["CPUUtilization", "MemoryUtilization"],
                           "resolutionSeconds": 20
                       }
                   ]
               }
           }
       ]
   }
   ```

**步驟 2：設定高解析度擴展政策**  


1. 如果尚未註冊，請使用 [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 命令將服務註冊為可擴展的目標。

   ```
   aws application-autoscaling register-scalable-target \
       --service-namespace ecs \
       --resource-id service/{{my-cluster}}/{{my-service}} \
       --scalable-dimension ecs:service:DesiredCount \
       --min-capacity {{1}} \
       --max-capacity {{10}} \
       --region {{us-east-1}}
   ```

1. 使用 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 命令，使用高解析度預先定義的指標建立目標追蹤擴展政策。下列範例以 50% 的 CPU 使用率為目標：

   ```
   aws application-autoscaling put-scaling-policy \
       --service-namespace ecs \
       --resource-id service/{{my-cluster}}/{{my-service}} \
       --scalable-dimension ecs:service:DesiredCount \
       --policy-name {{my-highres-cpu-policy}} \
       --policy-type TargetTrackingScaling \
       --target-tracking-scaling-policy-configuration '{
           "TargetValue": {{50.0}},
           "PredefinedMetricSpecification": {
               "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution"
           }
       }' \
       --region {{us-east-1}}
   ```

1. 確認已建立政策：

   ```
   aws application-autoscaling describe-scaling-policies \
       --service-namespace ecs \
       --resource-id service/{{my-cluster}}/{{my-service}} \
       --scalable-dimension ecs:service:DesiredCount \
       --region {{us-east-1}}
   ```

## 驗證更快速的服務自動擴展
<a name="faster-auto-scaling-validate"></a>

**第 1 部分：驗證高解析度指標是否正在發佈**  


1. 導覽至 CloudWatch 主控台。

1. 在導覽窗格中，選擇**指標**，然後選擇**所有指標**。

1. 選擇 **AWS/ECS** 命名空間。

1. 選擇 **ClusterName、ServiceName**。

1. 尋找您服務的 `CPUUtilization`和 `MemoryUtilization`指標。

1. 將期間設定為 **20 秒**。您應該會每隔 20 秒看到資料點，確認高解析度指標處於作用中狀態。

**第 2 部分：驗證擴展政策是否使用高解析度指標**  


1. 在服務詳細資訊頁面上，選擇**服務自動擴展**索引標籤。

1. 檢視現有的擴展政策，並確認指標已設定為高解析度變體 (`ECSServiceAverageCPUUtilizationHighResolution` 或 `ECSServiceAverageMemoryUtilizationHighResolution`)。

1. 或者，使用 CLI 進行驗證：

   ```
   aws application-autoscaling describe-scaling-policies \
       --service-namespace ecs \
       --resource-id service/{{my-cluster}}/{{my-service}} \
       --scalable-dimension ecs:service:DesiredCount \
       --region {{us-east-1}}
   ```

   確認回應`PredefinedMetricType`中的 設定為高解析度指標。

## 考量事項
<a name="faster-auto-scaling-considerations"></a>
+ 監控組態變更會建立新的服務修訂，並需要服務部署。在部署完成且所有任務都以 20 秒解析度發出之前，高解析度擴展指標無法使用。
+ 使用 Application Load Balancer 和 Network Load Balancer 的服務支援高解析度指標。不支援在沒有目標群組的情況下使用 Classic Load Balancer 的服務。
+ 使用 `CODE_DEPLOY`或 `EXTERNAL` 部署控制器類型的服務不支援高解析度指標。
+ 您可以使用 檢視服務的監控組態`DescribeServiceRevisions`。監控組態不會在 `CreateService`或 `UpdateService`回應中傳回。