使用OOS告警触发功能,自动重启CPU使用率高的ECS实例。
背景
当ECS实例因已知或未知的原因CPU使用率过高时,往往会影响实例上应用的运行状态,造成应用运行缓慢甚至卡死。此时通过重启实例能够快速恢复CPU使用率到较低水平,能够避免对应用的影响。这个场景可以使用OOS告警触发功能,将CPU使用率高的实例自动重启,从而达到无人值守自动恢复的效果。
操作步骤
登录OOS控制台。
单击告警与事件运维,单击创建。
设置触发规则。产品类型选择云服务器ECS,在规则描述中选择触发条件;本文选择当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使用率也下降。