CloudWatch 警示如何偵測 Amazon ECS 部署失敗 - Amazon Elastic Container Service

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

CloudWatch 警示如何偵測 Amazon ECS 部署失敗

您可以設定 Amazon ECS,在偵測到指定 CloudWatch 警示進入ALARM狀態時,將部署設定為失敗。

您可以選擇性地設定組態,將失敗的部署復原至上次完成的部署。

下列create-service AWS CLI 範例顯示如何在將部署警示與復原選項搭配使用時建立 Linux 服務。

aws ecs create-service \ --service-name MyService \ --deployment-controller type=ECS \ --desired-count 3 \ --deployment-configuration "alarms={alarmNames=[alarm1Name,alarm2Name],enable=true,rollback=true}" \ --task-definition sample-fargate:1 \ --launch-type FARGATE \ --platform-family LINUX \ --platform-version 1.4.0 \ --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321],securityGroups=[sg-12344321],assignPublicIp=ENABLED}"

在服務上使用 Amazon CloudWatch 警示方法時,請考慮下列事項。

  • 封裝時間是新服務版本橫向擴展且舊服務版本縮減之後的一段時間,在此期間,Amazon ECS 會繼續監控與部署相關聯的警示。Amazon ECS 會根據與部署相關聯的警示組態來計算此時段。

  • deploymentConfiguration 請求參數現在包含 alarms 資料類型。您可以指定警示名稱、是否使用該方法,以及是否在警示指出部署失敗時初始化復原。如需詳細資訊,請參閱 Amazon 彈性容器服務 API 參考CreateService中的。

  • DescribeServices 回應可提供部署狀態洞察,rolloutStaterolloutStateReason。當啟動新的部署時,推展狀態從 IN_PROGRESS 狀態開始。當服務達到穩定狀態且封裝時間完成時,推展狀態轉換為 COMPLETED。若服務無法達到穩定狀態,而警示已進入 ALARM 狀態,部署將轉換為 FAILED 狀態。處於 FAILED 狀態的部署不會啟動任何新任務。

  • 除 Amazon ECS 為已開始和已完成的部署傳送服務部署狀態變更事件以外,Amazon ECS 還會在使用警示的部署失敗時傳送事件。這些事件提供有關部署失敗原因的詳細資訊,或者部署是否因為回復而開始。如需詳細資訊,請參閱 Amazon ECS 服務部署狀態變更事件

  • 如果新的部署因為先前的部署失敗並已開啟復原而開始,服務部署狀態變更事件的 reason 欄位將指示部署因為復原而開始。

  • 如果您使用部署斷路器和 Amazon CloudWatch 警示來偵測故障,任何一種方法都可以在符合任一方法的條件後立即啟動部署失敗。當您對初始化部署失敗的方法使用復原選項時,就會發生復原。

  • 只有使用滾動更新 (ECS) 部署控制器的 Amazon ECS 服務才支援 Amazon CloudWatch 警示。

  • 您可以使用 Amazon ECS 主控台來設定此選項,或使用 AWS CLI. 如需詳細資訊,請參閱《AWS Command Line Interface 參考》中的 使用定義的參數建立服務create-service

  • 您可能會注意到,部署狀態會維持 IN_PROGRESS 較長的時間。其原因是 Amazon ECS 在刪除作用中的部署之前不會變更狀態,並且直到封裝時間過後才會發生這種情況。視警示組態而定,部署需要的時間可能比您不使用警示多幾分鐘 (即使新的主要任務集已縱向擴展,而舊的部署也縮減規模)。如果您使用 CloudFormation 逾時,請考慮增加逾時。如需詳細資訊,請參閱《AWS CloudFormation 使用者指南》中的在範本中建立等待條件

  • Amazon ECS 呼叫 DescribeAlarms 以輪詢警示。要DescribeAlarms計入與您帳戶相關聯之 CloudWatch 服務配額的呼叫。如果您有其他呼叫的 AWS 服務DescribeAlarms,可能會影響 Amazon ECS 輪詢警示。例如,如果其他服務撥出足夠的DescribeAlarms呼叫以達到配額,則該服務會受到限制,Amazon ECS 也會受到限制且無法輪詢警示。如果在節流期間產生警示,Amazon ECS 可能會遺漏警示,且可能不會發生回復。針對部署沒有其他影響。如需 CloudWatch 服務配額的詳細資訊,請參閱CloudWatch 使用指南中的CloudWatch 服務配額

  • 如果警示在部署開始時處於 ALARM 狀態,Amazon ECS 將不會在部署期間監控警示 (Amazon ECS 會忽略警示組態)。此行為可解決您要啟動新部署以修正初始部署失敗的情況。

建議的警示

我們建議您使用下列警示指標:

  • 如果您使用 Application Load Balancer,請使用 HTTPCode_ELB_5XX_CountHTTPCode_ELB_4XX_Count Application Load Balancer 指標。這些指標會檢查 HTTP 峰值。如需有關「Application Load Balancer」度量的詳細資訊,請參閱應用程式負載平衡器使用者指南中的應用程式負載平衡器的指CloudWatch 標

  • 如果您有現有的應用程式,請使用 CPUUtilizationMemoryUtilization 指標。這些指標會檢查叢集或服務使用的 CPU 和記憶體的百分比。如需詳細資訊,請參閱 考量事項

  • 如果您在任務中使用 Amazon Simple Queue Service 佇列,請使用 ApproximateNumberOfMessagesNotVisible Amazon SQS 指標。此指標會檢查佇列中延遲且無法立即讀取的訊息數量。如需 Amazon SQS 指標的詳細資訊,請參閱 Amazon 簡單佇列服務開發人員 CloudWatch 指南中的 Amazon SQS 可用指標。