1. 功能介绍。
1.1. 简介
实例健康状态表示实例操作系统的运行状态,通过实例健康状态,您可以快速确定ECS实例是否真正可用(例如是否可以通过SSH、RDP等访问)。本文主要为健康状态产品的功能介绍,以及如何通过ECS控制台或API查看实例健康状态。
1.2. 功能描述
实例健康状态关注的是实例操作系统的运行状态,包括操作系统是否正常运行,实例的网络是否连通,CPU或磁盘等性能是否受到影响等。例如,实例的生命周期状态为Running,并不意味着实例的操作系统已经运行起来了;只有当实例健康状态为OK时,实例的操作系统才真正完成启动用户态可用,才可以通过SSH或RDP进行访问。可以根据实例健康状态来识别实例是否存在故障,以便及时处理相应问题。
1.3. 实例健康状态值与定义
实例健康状态与实例生命周期状态之间的区别和对应的场景说明,如下表所示。
实例健康状态 |
实例生命周期状态 |
中文描述 |
实例真正状态说明 |
建议修复方案 |
Initializing |
Starting |
操作系统正在启动 |
实例正处于初始化阶段。 |
等待实例启动。 |
Running |
实例操作系统正在启动中。 |
等待实例启动。 |
||
Impaired |
Running |
操作系统运行存在异常 |
|
|
OK |
Running |
正常 |
实例操作系统正在运行中,且实例未受任何外部因素影响。 |
无 |
InsufficientData |
Stopping/Stopped |
数据不足 |
实例处于关机中或已关机状态。 |
启动实例。 |
NotApplicable |
Deleted |
不适用 |
实例当前生命周期状态无效。 |
无 |
1.4. 实例健康状态示例
- Initializing
- Impaired
- OK
- InsufficientData:实例已关机,不显示健康状态。
- NotApplicable:实例已删除,控制台无对应的实例记录。
2. 健康状态使用
2.1. ECS控制台
- 登录ECS管理控制台。
- 按下图标注步骤依次点击。
- 在实例列表设置对话框里,单击未显示区域中健康状态右侧的图标,然后单击继续。
- 找到目标实例,在健康状态列,查看实例健康状态。
2.2. OpenApi与SDK使用说明
- OpenApi-SDK 相关配置(以Java调用为例)
- pom文件
<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.6.1</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-ecs</artifactId> <version>5.11.7</version> </dependency> </dependencies>
- OpenClient实现
public class OpenClient { private IAcsClient client; public void initClient() { DefaultProfile profile = DefaultProfile.getProfile( "your region", // The region ID "your ak", // The AccessKey ID of the RAM account "your sk"); // The AccessKey Secret of the RAM account client = new DefaultAcsClient(profile); } public <R extends AcsResponse> R getResponse(RpcAcsRequest<R> request) { try { return this.client.getAcsResponse(request); } catch (ServerException e) { e.printStackTrace(); return null; } catch (ClientException e) { e.printStackTrace(); return null; } } }
- DescribeInstancesFullStatus(查看实例状态以及实例健康状态)
- 描述:查询一台或多台ECS实例的全状态信息。
- 主要请求参数
名称 |
类型 |
必填 |
描述 |
示例值 |
regionId |
string |
是 |
实例所属的地域ID |
cn-hangzhou |
InstanceId |
list<string> |
否 |
默认查询指定地域下的所有实例 |
["i-bp67acfmxazb4p****", "i-bp67acfmxazb4p****", … "i-bp67acfmxazb4p****"] |
pageNumber |
integer |
否 |
默认值:1 起始值:1 |
1 |
pageSize |
integer |
否 |
默认值:10 最大值:100 |
10 |
status |
string |
否 |
指定实例的生命周期状态。取值范围:
|
Runing |
healthStatus |
string |
否 |
指定实例的健康状态。取值范围:
以上参数取值均区分大小写。 |
OK |
- 主要返回参数
名称 |
类型 |
描述 |
示例值 |
totalCount |
integer |
查询到的实例总数 |
1 |
InstanceFullStatusSet |
instanceFullStatus[] |
实例全状态数组。 |
instanceFullStatus主要参数
名称 |
类型 |
描述 |
示例值 |
instanceId |
string |
查询到的实例总数 |
1 |
status |
object |
||
healthStatus |
object |
status/healthStatus参数
名称 |
类型 |
描述 |
示例值 |
name |
string |
实例生命周期/健康状态名称 |
OK |
code |
integer |
实例生命周期/健康状态代码 |
1 |
- api调用示例
// 查看实例健康状态 public void describeInstancesFullStatus() { DescribeInstancesFullStatusRequest request = new DescribeInstancesFullStatusRequest(); List<String> instanceIds = new ArrayList<String>(); instanceIds.add("i-bp13olycxni4rhwh****"); // 添加指定的实例 request.setInstanceIds(instanceIds); request.setPageSize(100); // 添加指定实例生命周期状态 // request.setStatus("Stopped"); // 添加指定实例健康状态 // request.setHealthStatus("Healthy"); DescribeInstancesFullStatusResponse response = getResponse(request); for (DescribeInstancesFullStatusResponse.InstanceFullStatusType instanceFullStatusType : response.getInstanceFullStatusSet()) { System.out.printf("instanceId: %s, healthStatus:%s, status: %s%n", instanceFullStatusType.getInstanceId(), instanceFullStatusType.getHealthStatus().getName(), instanceFullStatusType.getStatus().getName()); } }
- OpenAPI Explorer调试示例
2.3. 阿里云CLI
aliyun <product> <ApiName> [--parameter1 value1 --parameter2 value2 ...] --output cols=col1,col2 rows=rows.row[]
- 使用示例
- 查看特定实例的健康状态。
aliyun ecs DescribeInstances --RegionId TheRegionId --output cols=InstanceId,InstanceName rows=Instances.Instance[] ------------------------------------------ | InstanceId | InstanceName | | ---------- | ------------ | | i-bp13olycxni4rhwh**** | lf_test | ------------------------------------------ aliyun ecs DescribeInstancesFullStatus --RegionId TheRegionId --InstanceId.1 i-bp13olycxni4rhwh**** --output cols=HealthStatus rows=InstanceFullStatusSet.InstanceFullStatusType[] ------------------------- | HealthStatus | | ------------ | | map[Code:0 Name:Ok] | -------------------------
- 查看指定地域下所有实例的健康状态。
aliyun ecs DescribeInstancesFullStatus --RegionId TheRegionId --output cols=HealthStatus,InstanceId rows=InstanceFullStatusSet.InstanceFullStatusType[] --------------------------------------------------------------- | HealthStatus | InstanceId | | ------------ | ---------- | | map[Code:0 Name:Ok] | i-bp19trejji1vzvjr1qps | | map[Code:0 Name:Ok] | i-bp19trejji1vzvjr1qq0 | | map[Code:1 Name:InsufficientData] | i-bp19trejji1vzvjr1qpy | | map[Code:0 Name:Ok] | i-bp19y1z08hlzzldsdod2 | | map[Code:0 Name:Ok] | i-bp18hf5w2tc6o4irxm7l | ---------------------------------------------------------------
3. 云监控订阅实例健康状态通知
云监控(CloudMonitor)是一项针对阿里云资源和互联网应用进行监控的服务。云监控服务可用于收集获取阿里云资源的监控指标,探测互联网服务可用性,以及针对指标设置警报。
3.1. 创建订阅策略
若您的账户已经创建了报警联系人,且已经加入到报警联系组中,请跳过第二步。(点击链接查看您的报警联系人)
若您的账户已经存在通知配置策略,请跳过第三步。(点击链接查看您的通知配置策略)
- 登录云监控控制台。
- 依次点击报警服务 > 报警联系人 > 创建联系人。
- 依次点击事件中心 > 通知配置 > 创建策略。
- 依次点击事件中心 > 事件订阅 > 创建订阅策略。
报警订阅和通知按下图配置,其余步骤保持默认即可。
创建成功后,页面如下图所示
- 调试事件订阅。
单击确定。系统提示操作成功,云监控自动根据订阅策略中的通知方式给报警联系人发送一条报警测试通知。
3.2. 健康状态改变系统事件查询
3.3. 通知历史查询