當我的 CloudWatch 警示變更狀態時,為什麼沒有觸發 Amazon EC2 Auto Scaling 政策?
我已經設定 Amazon CloudWatch 警示來觸發我的 Amazon Elastic Compute Cloud (Amazon EC2) Auto Scaling 政策。當我的 CloudWatch 警示變更狀態時,為什麼沒有觸發 Amazon EC2 Auto Scaling 政策?
簡短描述
當 CloudWatch 警示轉換為新的警示狀態 (OK、ALARM 或 INSUFFICIENT_DATA) 時,警示會叫用對該狀態設定的任何動作。Amazon EC2 Auto Scaling 僅使用警示上設定的期間來確定其狀態是否應變更。因此,對於 Auto Scaling 動作而言,無論已設定的期間為何,只要該警示保持新狀態,它就會繼續每分鐘叫用已設定的動作。
CloudWatch 警示狀態變更未觸發 Amazon EC2 Auto Scaling 政策的常見原因包括:
- 沒有為 CloudWatch 警示啟用 Auto Scaling 動作,因此無法叫用擴展政策。
- Auto Scaling 群組中的擴展政策已停用。停用政策會阻止對群組進行評估。
- Auto Scaling 群組存在衝突的簡單擴展政策或步驟擴展政策,這會阻止觸發某些政策。
- Auto Scaling 群組的 lifecycle hook 不完整,這會阻止所有簡單擴展政策的套用。擱置中的執行個體也會導致步驟和目標追蹤擴展政策延遲。這是因為在 lifecycle hook 結束且暖機時間完成之前 (對於橫向擴展),Auto Scaling 不會將執行個體計入群組的容量。執行個體仍會計入群組的容量 (對於縮減),以防止過度擴展。lifecycle hook 在逾時或進行 CompleteLifecycleAction API 或 AWS Command Line Interface (AWS CLI) 呼叫時完成。
解決方法
在開始之前,請確保 CloudWatch 警示正在轉換至 ALARM 狀態。如果警示的設定與所監控指標的閾值不相符,則警示可能無法轉換至 ALARM 狀態。如果警示未變更狀態,則不會觸發 Amazon EC2 Auto Scaling 政策。如需如何評估 CloudWatch 警示的相關詳細資訊,請參閱評估警示。
透過檢查警示的閾值,驗證您的 CloudWatch 警示是否在預期時間進入 ALARM 狀態。增大或減小閾值以符合您的預期值。此外,請檢閱警示期間和評估期間。您可能需要編輯警示的期間和評估期間,才能如預期觸發 Amazon EC2 Auto Scaling 政策。如需如何確認警示觸發動作的詳細資訊,請參閱如何確認 CloudWatch 警示觸發動作?。
**重要事項:**建立或編輯警示時,請記住以下幾點:
- 請確保您尚未暫停 Amazon EC2 Auto Scaling 群組的擴展程序 (AlarmNotification、Launch 或 Terminate)。如果已暫停,請務必恢復這些擴展程序。
- 切勿直接編輯與目標追蹤政策相關聯的警示。編輯這些警示可能會造成非預期的影響。這些警示的閾值將根據擴展政策中設定的目標值自動確定。
檢查是否已為 CloudWatch 警示啟用 Amazon EC2 Auto Scaling 動作
若要讓 CloudWatch 警示叫用 Amazon EC2 Auto Scaling 政策,必須在警示的組態中啟用 ActionsEnabled 參數。請確保警示組態中的 ActionsEnabled 參數為 true。
**注意:**如果您使用 CloudWatch 主控台建立或更新警示,預設情況下,ActionsEnabled 參數將設定為 true。
若要使用 AWS CLI 檢查並啟用警示動作:
**注意:**如果您在執行 AWS CLI 命令時收到錯誤訊息,請確認您使用的是最新版本的 AWS CLI。
- 使用 describe-alarms 檢查目前組態,如下所示。請務必使用您的警示的 ID 取代 myalarm。
aws cloudwatch describe-alarms --alarm-names "myalarm" --query 'MetricAlarms[].ActionsEnabled'
- 檢閱輸出。如果 ActionsEnabled 參數並未設定為 true,請使用 enable-alarm-actions 啟用警示動作,如下所示。請務必使用您的警示的 ID 取代 myalarm。
aws cloudwatch enable-alarm-actions --alarm-names myalarm
若要使用 CloudWatch API 檢查並啟用警示動作:
-
使用 DescribeAlarms 檢查您目前的組態。
-
如果沒有為您的警示啟用動作,請使用 EnableAlarmActions 啟用動作。
檢查 Amazon EC2 Auto Scaling 群組的簡單擴展和步驟擴展政策
若要使用 Amazon EC2 主控台檢查群組的擴展政策:
-
登入 Amazon EC2 主控台。
-
在導覽窗格的 Auto Scaling 中,選擇 Auto Scaling 群組。
-
在內容窗格中,選取您的 Auto Scaling 群組。
-
選擇 Automatic Scaling 索引標籤。
-
記下政策類型 (步驟擴展、簡單擴展或目標追蹤)。
若要使用 AWS CLI 檢查擴展政策,請對您的 Auto Scaling 群組的 ID 使用命令 describe-policies 和 --policy-types 參數。該輸出列出每種類型的政策 (SimpleScaling、StepScaling 或 Target tracking)。
若要使用 API 檢查擴展政策,請使用呼叫 DescribePolicies 和參數 PolicyTypes。該輸出列出每種類型的政策 (SimpleScaling、StepScaling 或 Target tracking)。
如果您有一個有效的簡單擴展政策,則除非符合下列條件,否則不會叫用任何其他簡單擴展政策:
- 目前有效的簡單擴展政策已完成。
- Amazon EC2 Auto Scaling 政策的冷卻時間已過。簡單擴展政策會遵循 Amazon EC2 Auto Scaling 政策的預設或指定冷卻時間。
**注意:**執行簡單擴展政策不會完全阻止步驟擴展或目標追蹤政策的執行。請確保不會同時套用相互矛盾的政策。
檢查 Amazon EC2 Auto Scaling 政策中的 Auto Scaling lifecycle hook
當 Auto Scaling lifecycle hook 生效時,不會執行簡單擴展政策。如果您在 Auto Scaling 群組中使用簡單擴展政策,請務必停止任何 lifecycle hook。
**注意:**如果正在進行 lifecycle hook,步驟擴展政策仍會觸發。但是,政策的擴展速度緩慢,因為執行個體在 lifecycle hook 結束前不會啟動暖機計時器。
檢查所有 lifecycle hook 在其通用逾時期間或活動訊號逾時期間到期後已完成,其結果為 CONTINUE 或 ABANDON。
若要使用 Amazon EC2 主控台檢查 lifecycle hook 動作:
-
登入 Amazon EC2 主控台。
-
在導覽窗格的 Auto Scaling 中,選擇 Auto Scaling 群組。
-
在內容窗格中,選取您的 Auto Scaling 群組。
-
選擇活動索引標籤,然後捲動至活動歷史記錄區段。
-
檢閱任何正在進行的 lifecycle hook 動作的活動。
-
如需結束 lifecycle hook 的步驟,請參閱完成 lifecycle hook。若要使用 AWS CLI 完成 lifecycle hook 動作,請使用命令 complete-lifecycle-action。若要使用 API 完成 lifecycle hook 動作,請進行 CompleteLifecycleAction 呼叫。
相關資訊

相關內容
- 已提問 4 個月前lg...
- 已提問 1 個月前lg...
- 已提問 1 個月前lg...
- 已提問 6 個月前lg...
- 已提問 5 個月前lg...
- AWS 官方已更新 4 個月前
- AWS 官方已更新 3 年前
- AWS 官方已更新 7 個月前