设置ECS实例CPU使用率告警自动重启

ECS实例的CPU使用率异常升高会影响其上运行的应用程序性能,继而导致应用运行缓慢或停止响应。为了快速恢复,您可以重启ECS实例以降低CPU使用率,减轻对应用的影响。OOS提供告警触发功能,支持在检测到CPU使用率过高时自动重启实例,从而实现自动化处理,无需人工干预。本文介绍如何通过配置CPU使用率告警,并在超过阈值时自动重启ECS实例,以快速恢复服务性能。

前期准备

您需要为系统运维管理准备一个拥有重启ECS权限的RAM角色。

  1. 定义一个自定义权限策略,包含重启实例ecs:RebootInstance和查询实例ecs:DescribeInstances的操作权限,详细步骤,请参见创建自定义权限策略

    自动重启所需权限

    {
      "Version": "1",
      "Statement": [
        {
          "Action": [
            "ecs:RebootInstance",
            "ecs:DescribeInstances"
          ],
          "Resource": "*",
          "Effect": "Allow"
        }
      ]
    }
  2. 创建一个普通服务角色,并指定系统运维管理为受信服务。选择受信服务的详细步骤,请参见创建可信实体为阿里云服务的RAM角色

  3. 将自定义的权限策略授予新创建的服务角色,这样角色就具备了执行所需操作的权限,详细步骤,请参见为RAM角色授权

操作步骤

  1. 登录系统运维管理控制台,自动化任务 > 告警与事件运维

  2. 在告警与事件运维页面,单击创建,选择阈值告警image

  3. 在触发规则填写规则与实例。image

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

  5. 地域ID、目标实例、任务执行的并发比率保留默认,权限选择拥有重启ECS权限的RAM角色。image

  6. 单击创建,弹出对话框内单击确认,完成设置。

验证结果

本文通过开源压测工具stress-ng模拟CPU使用率高的场景。

  1. 远程连接登录到监控的ECS实例,请参见ECS远程连接方式概述

  2. 安装stress-ng工具。

    Alibaba Cloud Linux、CentOS、RHEL

    yum install stress-ng -y

    Ubuntu、Debian

    apt-get install stress-ng -y
  3. 使用stress-ng压测2个CPU核心,CPU负载设置为85%,运行5分钟后停止。

    stress-ng --cpu 2 --cpu-load 85 --timeout 5m
  4. 观察CPU使用情况,运行压测的实例重启后,CPU使用率下降。image