本教程详细介绍如何使用Alibaba Cloud SDK for Java查询ECS的监控信息和自定义数据。

前提条件

在使用本教程前,请确保已完成以下操作:

  • 使用Alibaba Cloud SDK for Java,您需要一个阿里云账号和访问密钥(AccessKey)。 请在阿里云控制台中的AccessKey管理页面上创建和查看您的AccessKey。
  • 确保您已经安装了Alibaba Cloud SDK for Java,准确的SDK版本号,请参见 阿里云开发工具包(SDK)
    <dependencies>     <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-core --&gt;     <dependency&gt;         <groupId>com.aliyun</groupId>         <artifactId>aliyun-java-sdk-core</artifactId>         <version>4.4.3</version>     </dependency>     <!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-ecs-->     <dependency>         <groupId>com.aliyun</groupId>         <artifactId>aliyun-java-sdk-ecs</artifactId>         <version>4.17.4</version>     </dependency> </dependencies>

代码示例

本文操作示例主要以代码形式体现,具体代码如下:

import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.IAcsClient; import com.aliyuncs.ecs.model.v20140526.DescribeInstanceMonitorDataRequest; import com.aliyuncs.ecs.model.v20140526.DescribeInstanceMonitorDataResponse; import com.aliyuncs.ecs.model.v20140526.DescribeUserDataRequest; import com.aliyuncs.ecs.model.v20140526.DescribeUserDataResponse; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.profile.DefaultProfile; import com.google.gson.Gson; import java.util.List;  /**  * DescribeInstanceMonitorData    查询一台ECS实例所有相关的监控信息  * DescribeUserData    查询一台ECS实例的自定义数据  */ public class Demo{      // 待查询的实例 ID     private static String instanceId = "i-bp13p7vlcb1uih******";     // 获取数据的起始时间点。按照 ISO8601 表示,并需要使用 UTC 时间,格式为:YYYY-MM-DDThh:mm:ssZ。如果指定的秒(ss)不是 00,则自动换算为下一分钟。     private static String startTime = "2019-11-11T07:00:00Z";     // 获取数据的结束时间点。按照 ISO8601 标准表示,并需要使用 UTC 时间,格式为:YYYY-MM-DDThh:mm:ssZ。 如果指定的秒(ss)不是 00,则自动换算为下一分钟。     private static String endTime = "2019-11-11T07:30:00Z";      public static void main(String[] args) throws ClientException {          IAcsClient client = Initialization();         // 查询一台 ECS 实例所有相关的监控信息         List<DescribeInstanceMonitorDataResponse.InstanceMonitorData> monitorDataList = DescribeInstanceMonitorData(client);         // 处理业务返回的监控信息数据。(请根据您的实际业务需求来进行处理)         System.out.println(new Gson().toJson(monitorDataList));         // 查询一台ECS实例的自定义数据         String userData = DescribeUserData(client);         // 处理业务返回的实例自定义数据。(请根据您的实际业务需求来进行处理)         System.out.println(userData);      }      /**      * DescribeUserData    查询一台ECS实例的自定义数据      */     private static String DescribeUserData(IAcsClient client) {         DescribeUserDataRequest request = new DescribeUserDataRequest();         request.setInstanceId(instanceId);         try {             DescribeUserDataResponse response = client.getAcsResponse(request);             System.out.println("--------------------查询ECS自定义数据--------------------");             return response.getUserData();         } catch (ClientException e) {             System.out.println("ErrCode:" + e.getErrCode());             System.out.println("ErrMsg:" + e.getErrMsg());             System.out.println("RequestId:" + e.getRequestId());             return null;         }     }      /**      * DescribeInstanceMonitorData    查询一台 ECS 实例所有相关的监控信息      */     private static List<DescribeInstanceMonitorDataResponse.InstanceMonitorData> DescribeInstanceMonitorData(IAcsClient client) {         DescribeInstanceMonitorDataRequest request = new DescribeInstanceMonitorDataRequest();         // 待查询的实例 ID         request.setInstanceId(instanceId);         // 获取数据的起始时间点。按照 ISO8601 标准表示,并需要使用 UTC 时间,格式为:YYYY-MM-DDThh:mm:ssZ。如果指定的秒(ss)不是 00,则自动换算为下一分钟。         request.setStartTime(startTime);         // 获取数据的结束时间点。按照 ISO8601 标准表示,并需要使用 UTC 时间,格式为:YYYY-MM-DDThh:mm:ssZ。 如果指定的秒(ss)不是 00,则自动换算为下一分钟。         request.setEndTime(endTime);         try {             DescribeInstanceMonitorDataResponse response = client.getAcsResponse(request);             System.out.println("--------------------查询ECS所有相关的监控信息--------------------");             return response.getMonitorData();         } catch (ClientException e) {             System.out.println("ErrCode:" + e.getErrCode());             System.out.println("ErrMsg:" + e.getErrMsg());             System.out.println("RequestId:" + e.getRequestId());             return null;         }     }      /**      * Initialization  初始化公共请求参数      */     private static IAcsClient Initialization() {         // 初始化请求参数         DefaultProfile profile = DefaultProfile.getProfile(                 "<your-region-id>", // 您的可用区ID                 "<your-access-key-id>", // 您的AccessKey ID                 "<your-access-key-secret>"); // 您的AccessKey Secret         return new DefaultAcsClient(profile);     } }

执行结果

正确的返回结果类似如下:

--------------------查询ECS所有相关的监控信息-------------------- {     "requestId": "8B2933EB-2E12-41D8-A5A2-A6DC23424040",      "monitorData": [         {             "instanceId": "i-bp13p7vlcb1ui******",              "cPU": 8,              "intranetRX": 1192,              "intranetTX": 720,              "intranetBandwidth": 24,              "internetRX": 0,              "internetTX": 0,              "internetBandwidth": 0,              "timeStamp": "2019-11-11T07:01:00Z"         }     ] } --------------------查询ECS自定义数据-------------------- IyEvYmluL3No-UserData