全部产品
Search
文档中心

系统运维管理:通过告警触发自动重启CPU使用率高的ECS实例

更新时间:Mar 22, 2024

使用OOS告警触发功能,自动重启CPU使用率高的ECS实例。

背景

当ECS实例因已知或未知的原因CPU使用率过高时,往往会影响实例上应用的运行状态,造成应用运行缓慢甚至卡死。此时通过重启实例能够快速恢复CPU使用率到较低水平,能够避免对应用的影响。这个场景可以使用OOS告警触发功能,将CPU使用率高的实例自动重启,从而达到无人值守自动恢复的效果。

操作步骤

  1. 登录OOS控制台

  2. 单击告警与事件运维,单击创建

  3. 设置触发规则。产品类型选择云服务器ECS,在规则描述中选择触发条件;本文选择当cpu_total大于80%时,触发告警操作,即进行重启实例;触发沉默周期默认为5分钟,即5分钟内不会因为重复的告警而重启实例。

  4. 在需要报警资源中,选择要监控CPU使用率的实例。

  5. 选择模板,模板类型选择公共模板,并选择批量重启ECS实例模板ACS-ECS-BulkyRebootInstancesimage

  6. 设置模板参数。选择从告警消息体选择参数

  7. 地域ID目标实例任务执行的并发比率保留默认配置即可。

  8. 执行使用到的权限的来源,需要为OOS服务创建RAM角色,参考《为OOS服务设置RAM权限》。执行此模板需要的权限策略。

    {
      "Version": "1",
      "Statement": [
        {
          "Action": [
            "ecs:RebootInstance",
            "ecs:DescribeInstances"
          ],
          "Resource": "*",
          "Effect": "Allow"
        }
      ]
    }
  9. 设置完成后,单击创建

结果验证

针对本文中的场景,可以通过压测工具 stress-ng 模拟CPU使用率高的情况。

  1. 远程连接登录到监控的ECS实例。

  2. 安装stress-ng。

    # AliyunLinux/CentOS/RHEL
    yum install stress-ng -y
    
    # Ubuntu/Debian
    apt-get install stress-ng -y
  3. 运行stress-ng命令模拟CPU使用。

    # stress-ng命令可以根据压测需求调整参数。
    # 示例命令中,使用stress-ng压测2个CPU核,CPU负载设置为85%,运行5分钟后停止。
    stress-ng --cpu 2 --cpu-load 85 --timeout 5m
  1. 压测1分钟左右,观察告警触发被执行,运行命令的ECS实例被成功重启,ECS实例的CPU使用率也下降。Screenshot 2023-05-22 at 19.12.52.png