本文介绍如何通过控制台与OpenAPI,查询与响应SystemFailure.Reboot(系统故障,导致实例重启)事件,快速排除故障、确保云产品稳定运行。
说明
仅本地SSD型、大数据型、高性能计算GPU型规格族的实例会触发本事件,详情可查看实例规格清单。
当云服务器宿主机(物理机)出现故障导致宕机时,可能需要重启实例,尝试恢复实例正常运行。火山引擎不仅会通过事件通知告知您,同时还为您提供了完善的自动化运维方式,协助您快速排除故障。
本场景适用于触发事件时,您不期望实例重启或重新部署至其他宿主机。
当云服务器实例触发本事件时,火山引擎将不会进行重启或重新部署操作,同时生成SystemFailure.Stop:Succeeded(系统故障,导致实例停止:成功)事件通知您。
说明
停止状态实例仍会保持计费。
本场景适用于触发事件时,您期望实例自动重启解决故障,并在重启失败时获取您的授权再将实例重新部署至其他宿主机。
当云服务器实例触发本事件时,火山引擎将自动重启该实例。若重启成功,实例将恢复正常运行并生成SystemFailure.Reboot:Succeeded(系统故障,导致实例重启:成功);若重启失败,火山引擎将生成SystemFailure.Reboot:Failed(系统故障,导致实例重启:失败)与SystemFailure.Redeploy:Inquring(系统故障,导致实例重新部署:待响应)事件,您可以授权火山引擎将实例部署到新宿主机上,否则实例将保持停止状态。
说明
停止状态实例仍会保持计费。
登录云服务器控制台。
在顶部导航栏,选择目标实例所属的项目和地域。
在左侧导航树,选择“实例与镜像 > 实例”,进入实例列表页。
单击目标实例右侧“操作”列的“... > 运维与诊断 > 实例维护设置”按钮。
在弹窗中勾选“自动重启实例”。更多自动运维配置详情可查看系统事件自动运维设置。
收到SystemFailure.Reboot:Failed(系统故障,导致实例重启:失败)与SystemFailure.Redeploy:Inquring(系统故障,导致实例重新部署:待响应)事件时,请授权火山引擎运维人员,将您的实例重新部署至新宿主机。
在控制台响应事件
使用OpenAPI响应事件
以JAVA语言接口为例,您可以参考如下顺序调用OpenAPI接口,查询、响应云服务器事件。
调用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 }] }
调用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: }
调用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 }] }
调用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分钟。
登录云服务器控制台。
在顶部导航栏,选择目标实例所属的项目和地域。
在左侧导航树,选择“实例与镜像 > 实例”,进入实例列表页。
单击目标实例右侧“操作”列的“... > 运维与诊断 > 实例维护设置”按钮。
在弹窗中勾选“重新部署实例并保持实例原状态”。更多自动运维配置详情可查看系统事件自动运维设置。
后续,当实例触发本事件且重新部署成功后,火山引擎将生成SystemFailure.Redeploy:Succeeded(系统故障,导致实例重新部署:成功)事件,同步您运维结果。