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