You need to enable JavaScript to run this app.
导航

查询与响应“系统故障,导致实例重启”事件

最近更新时间2023.12.08 11:30:54

首次发布时间2023.11.21 10:24:16

本文介绍如何通过控制台与OpenAPI,查询与响应SystemFailure.Reboot(系统故障,导致实例重启)事件,快速排除故障、确保云产品稳定运行。

说明

仅本地SSD型、大数据型、高性能计算GPU型规格族的实例会触发本事件,详情可查看实例规格清单

操作场景

当云服务器宿主机(物理机)出现故障导致宕机时,可能需要重启实例,尝试恢复实例正常运行。火山引擎不仅会通过事件通知告知您,同时还为您提供了完善的自动化运维方式,协助您快速排除故障。

场景一:保持实例停止状态

本场景适用于触发事件时,您不期望实例重启或重新部署至其他宿主机。

操作流程

当云服务器实例触发本事件时,火山引擎将不会进行重启或重新部署操作,同时生成SystemFailure.Stop:Succeeded(系统故障,导致实例停止:成功)事件通知您。

说明

停止状态实例仍会保持计费。

操作步骤

  1. 登录云服务器控制台
  2. 在顶部导航栏,选择目标实例所属的项目和地域。
  3. 在左侧导航树,选择“实例与镜像 > 实例”,进入实例列表页。
  4. 单击目标实例右侧“操作”列的“... > 运维与诊断 > 实例维护设置”按钮。
  5. 在弹窗中勾选“保持实例关机状态”。更多自动运维配置详情可查看系统事件自动运维设置

场景二:重启失败时授权重新部署实例

本场景适用于触发事件时,您期望实例自动重启解决故障,并在重启失败时获取您的授权再将实例重新部署至其他宿主机。

操作流程

当云服务器实例触发本事件时,火山引擎将自动重启该实例。若重启成功,实例将恢复正常运行并生成SystemFailure.Reboot:Succeeded(系统故障,导致实例重启:成功);若重启失败,火山引擎将生成SystemFailure.Reboot:Failed(系统故障,导致实例重启:失败)与SystemFailure.Redeploy:Inquring(系统故障,导致实例重新部署:待响应)事件,您可以授权火山引擎将实例部署到新宿主机上,否则实例将保持停止状态。

说明

停止状态实例仍会保持计费。

操作步骤

  1. 登录云服务器控制台

  2. 在顶部导航栏,选择目标实例所属的项目和地域。

  3. 在左侧导航树,选择“实例与镜像 > 实例”,进入实例列表页。

  4. 单击目标实例右侧“操作”列的“... > 运维与诊断 > 实例维护设置”按钮。

  5. 在弹窗中勾选“自动重启实例”。更多自动运维配置详情可查看系统事件自动运维设置

  6. 收到SystemFailure.Reboot:Failed(系统故障,导致实例重启:失败)与SystemFailure.Redeploy:Inquring(系统故障,导致实例重新部署:待响应)事件时,请授权火山引擎运维人员,将您的实例重新部署至新宿主机。

    • 在控制台响应事件

      1. 登录云服务器控制台
      2. 在顶部导航栏选择业务所在地域。
      3. 在左侧导航树,选择“运维与监控 > 事件监控”,进入事件监控列表页。
      4. 通过事件ID或时间筛选目标“系统故障,导致实例重新部署:待响应”(SystemFailure.Redeploy:Inquring)事件。
      5. 单击目标事件“操作”列的“授权重新部署”按钮,进行授权响应。
      6. 成功授权后,事件状态将更新为执行中。火山引擎运维人员将在您授权后开始重新部署操作,预计耗时5分钟。

        重新部署成功后,事件状态将更新为执行成功
    • 使用OpenAPI响应事件
      以JAVA语言接口为例,您可以参考如下顺序调用OpenAPI接口,查询、响应云服务器事件。

      说明

      • 本节通过火山引擎SDK调用相关接口,请在您的项目中导入火山引擎SDK,操作详情可查看SDK概述
      • 若您不想在项目中引入SDK,可自行构造HTTP/HTTPS请求,操作详情可查看调用方法
      1. 调用DescribeSystemEvents接口,查询云服务器实例触发的事件信息。
        请求示例:

        public void queryInstanceEvents(){
          //设置您的ak
          String ak = "Your AK";
          //设置您的sk
          String sk = "Your SK";
          //设置您要访问的地域,本示例为北京地域
          String region = "cn-beijing";
        
          //初始化apiclient
          ApiClient apiClient = new ApiClient()
                  .setCredentials(Credentials.getCredentials(ak, sk))
                  .setRegion(region);
        
          EcsApi ecsApi = new EcsApi(apiClient);
        
          DescribeSystemEventsRequest describeSystemEventsRequest = new DescribeSystemEventsRequest();
        
          // 指定待查询的实例ID
          describeSystemEventsRequest.setResourceIds(Arrays.asList("<A实例ID>"));
          // 筛选生成事件的起始时间
          describeSystemEventsRequest.setCreatedAtStart("2023-05-20T01:29:38+08:00");
          // 筛选生成事件的结束时间
          describeSystemEventsRequest.setCreatedAtEnd("2023-05-25T18:29:38+08:00");
          
          try {
            DescribeSystemEventsResponse describeSystemEventsResponse = ecsApi.describeSystemEvents(describeSystemEventsRequest);
            System.out.println(describeSystemEventsResponse);
            
            } catch (ApiException e) {          
            System.out.println(e.getResponseBody());
            
            }
        }
        

        返回示例:

        class DescribeSystemEventsResponse {
          nextToken:
          systemEvents: [class SystemEventForDescribeSystemEventsOutput {     
          createdAt: 2023-05-25T14:15:21+08:00
          id: e-ycfroor651gh9zxxx
          operatedEndAt: 2023-05-29T11:58:30+08:00
          operatedStartAt: 2023-05-28T23:58:30+08:00
          resourceId: <A实例ID>
          status: Inquiring
          type: SystemFailure_Redeploy
          updatedAt: 2023-05-26T11:58:30+08:00
          }]
         }
        
    1. 调用DescribeEventTypes接口,查询实例触发的所有事件是否需要响应。
      请求示例:

      public void queryEventType(){
          //设置您的ak
          String ak = "Your AK";
          //设置您的sk
          String sk = "Your SK";
          //设置您要访问的地域,本示例为北京地域
          String region = "cn-beijing";
          
          //初始化apiclient
          ApiClient apiClient = new ApiClient()
              .setCredentials(Credentials.getCredentials(ak, sk))
              .setRegion(region);
          
          EcsApi ecsApi = new EcsApi(apiClient);
          
          DescribeEventTypesRequest describeEventTypesRequest = new DescribeEventTypesRequest();
          
          // 指定待查询的事件类型
          describeEventTypesRequest.setTypes(Arrays.asList("SystemFailure_Redeploy"));
          
          // 筛选需要响应的事件
          describeEventTypesRequest.setResponseRequired(true);
          
          try {
            DescribeEventTypesResponse describeEventTypesResponse = ecsApi.describeEventTypes(describeEventTypesRequest);
            System.out.println(describeEventTypesResponse);
          } catch (ApiException e) {
            System.out.println(e.getResponseBody());
          }
        }
      

      返回示例:

      本实践中,实例A触发的SystemFailure_Redeploy:Inquring(系统故障,导致实例重新部署:待授权)事件需要响应。

      class DescribeEventTypesResponse {
        eventTypes: [class EventTypeForDescribeEventTypesOutput {
          kind: UnexpectedOperations
          responseRequired: true
          status: [Inquiring, Executing, Succeeded, Failed, Canceled]
          title: 系统故障,导致实例重新部署
          type: SystemFailure_Redeploy
        }]
        nextToken:
       }
      
      
    2. 调用UpdateSystemEvents接口,响应SystemFailure_Redeploy:Inquring(系统故障,导致实例重新部署:待授权)事件,授权火山引擎运维人员重新部署实例,排除故障。
      请求示例:

      public void updateEvents(){
        //设置您的ak
        String ak = "Your AK";
        //设置您的sk
        String sk = "Your SK";
        //设置您要访问的地域,本示例为北京地域
        String region = "cn-beijing";
        
        //初始化apiclient
        ApiClient apiClient = new ApiClient()
            .setCredentials(Credentials.getCredentials(ak, sk))
            .setRegion(region);
            
        EcsApi ecsApi = new EcsApi(apiClient);
        
        
        UpdateSystemEventsRequest updateSystemEventsRequest = new UpdateSystemEventsRequest();
        
        // 传入需要响应的事件ID
        updateSystemEventsRequest.setEventIds(Arrays.asList("e-ycfu1fit1f8hcczyxxx"));
        // 响应事件
        updateSystemEventsRequest.setStatus("Executing");
        // 指定重新部署实例时间窗
        
        try {
           UpdateSystemEventsResponse updateSystemEventsResponse = ecsApi.updateSystemEvents(updateSystemEventsRequest);
           System.out.println(updateSystemEventsResponse);
           } catch (ApiException e) {
           System.out.println(e.getResponseBody());
           }
       }
      

      返回示例:

      class UpdateSystemEventsResponse {
       operationDetails: [class OperationDetailForUpdateSystemEventsOutput {
       error: null
       eventId: e-ycfu1fit1f8hcczxxx
       }]
      }
      
    3. 调用DescribeSystemEvents接口,传入已响应的事件ID,查询事件当前状态等信息。
      请求示例:

      public void queryInstanceEvents(){
        //设置您的ak
        String ak = "Your AK";
        //设置您的sk
        String sk = "Your SK";
        //设置您要访问的地域,本示例为北京地域
        String region = "cn-beijing";
        
        //初始化apiclient
        ApiClient apiClient = new ApiClient()
               .setCredentials(Credentials.getCredentials(ak, sk))
               .setRegion(region);
               
        EcsApi ecsApi = new EcsApi(apiClient);
        
        DescribeSystemEventsRequest describeSystemEventsRequest = new DescribeSystemEventsRequest();
        // 指定待查询事件ID
        describeSystemEventsRequest.setEventIds(Arrays.asList("e-ycfu1fit1f8hcczyxxx"));
        
        try {
            DescribeSystemEventsResponse describeSystemEventsResponse = ecsApi.describeSystemEvents(describeSystemEventsRequest);
            System.out.println(describeSystemEventsResponse);
         } catch (ApiException e) {          
            System.out.println(e.getResponseBody());   
         }
      }
      

      返回示例:

      • 事件处于执行中状态示例如下:

        class DescribeSystemEventsResponse {
          nextToken: 
          systemEvents: [class SystemEventForDescribeSystemEventsOutput {
            createdAt: 2023-05-26T11:58:30+08:00
            id: e-ycfu1fit1f8hcczyxxx
            operatedEndAt: 2023-05-29T11:58:30+08:00
            operatedStartAt: 2023-05-28T23:58:30+08:00
            resourceId: <A实例ID>
            status: Executing
            type: SystemFailure_Redeploy
            updatedAt: 2023-05-26T14:19:19+08:00
            }]
         }
        
      • 事件执行成功示例如下:

        class DescribeSystemEventsResponse {
          nextToken: 
          systemEvents: [class SystemEventForDescribeSystemEventsOutput {
            createdAt: 2023-05-26T11:58:30+08:00
            id: e-ycfu1fit1f8hcczyxxx
            operatedEndAt: 2023-05-29T11:58:30+08:00
            operatedStartAt: 2023-05-28T23:58:30+08:00
            resourceId: <A实例ID>
            status: Succeeded
            type: SystemFailure_Redeploy
            updatedAt: 2023-05-28T23:58:30+08:00
            }]
         }
        

场景三:自动重新部署实例

本场景适用于,您期望实例自动重启解决故障,并在重启失败时自动将实例重新部署至其他宿主机。

操作流程

当云服务器实例触发本事件时,火山引擎会自动重启实例。若重启成功,实例将恢复正常运行,不进行重新部署操作;若重启失败,火山引擎将生成SystemFailure.Reboot:Failed(系统故障,导致实例重启:失败)与SystemFailure.Redeploy:Executing(系统故障,导致实例重新部署:执行中)事件,运维人员将在收到该通知后,将您的实例重新部署至新宿主机,预计耗时5分钟。

操作步骤

  1. 登录云服务器控制台
  2. 在顶部导航栏,选择目标实例所属的项目和地域。
  3. 在左侧导航树,选择“实例与镜像 > 实例”,进入实例列表页。
  4. 单击目标实例右侧“操作”列的“... > 运维与诊断 > 实例维护设置”按钮。
  5. 在弹窗中勾选“自动重新部署实例”。更多自动运维配置详情可查看系统事件自动运维设置
  6. 后续,当实例触发本事件且重新部署成功后,火山引擎将生成SystemFailure.Redeploy:Succeeded(系统故障,导致实例重新部署:成功)事件,同步您运维结果。