使用OOS警示觸發功能,自動重啟CPU使用率高的ECS執行個體。
背景
當ECS執行個體因已知或未知的原因CPU使用率過高時,往往會影響執行個體上應用的運行狀態,造成應用運行緩慢甚至卡死。此時通過重啟執行個體能夠快速恢複CPU使用率到較低水平,能夠避免對應用的影響。這個情境可以使用OOS警示觸發功能,將CPU使用率高的執行個體自動重啟,從而達到無人值守自動回復的效果。
操作步驟
登入OOS控制台。
單擊警示與事件營運,單擊建立。
設定觸發規則。產品類型選擇Elastic Compute Service,在規則描述中選擇觸發條件;本文選擇當cpu_total大於80%時,觸發警示操作,即進行重啟執行個體;觸發沉默周期預設為5分鐘,即5分鐘內不會因為重複的警示而重啟執行個體。
在需要警示資源中,選擇要監控CPU使用率的執行個體。
選擇模板,模板類型選擇公用模板,並選擇大量重啟ECS執行個體模板ACS-ECS-BulkyRebootInstances。
設定模板參數。選擇從警示訊息體選擇參數。
地區ID、目標執行個體、任務執行的並發比率保留預設配置即可。
執行使用到的許可權的來源,需要為OOS服務建立RAM角色,參考《為OOS服務設定RAM許可權》。執行此模板需要的權限原則。
{ "Version": "1", "Statement": [ { "Action": [ "ecs:RebootInstance", "ecs:DescribeInstances" ], "Resource": "*", "Effect": "Allow" } ] }
設定完成後,單擊建立。
結果驗證
針對本文中的情境,可以通過壓測工具 stress-ng 類比CPU使用率高的情況。
遠端連線登入到監控的ECS執行個體。
安裝stress-ng。
# AliyunLinux/CentOS/RHEL yum install stress-ng -y # Ubuntu/Debian apt-get install stress-ng -y
運行stress-ng命令類比CPU使用。
# stress-ng命令可以根據壓測需求調整參數。 # 樣本命令中,使用stress-ng壓測2個CPU核,CPU負載設定為85%,運行5分鐘後停止。 stress-ng --cpu 2 --cpu-load 85 --timeout 5m
壓測1分鐘左右,觀察警示觸發被執行,運行命令的ECS執行個體被成功重啟,ECS執行個體的CPU使用率也下降。