通过阿里云API 获取ECS 系统状态
阿里云提供了非常完善的API SDK 和文档
OpenAPI Explorer 快速检索、可视化调试 API、在线命令行工具、同步动态生成可执行 SDK Example 代码 Java SDK使用手册 for 云监控 API 网关错误代码表 检查API 错误信息
Aliyun JDK的 使用
1. 添加依赖
根据需要使用到的API接口,添加对应的包.最新版本需要自己去 JDK 页面查看
- aliyun-java-sdk-core 核心,必须引入
- aliyun-java-sdk-cms 云监控API(获取CUP/MEM等信息,需要访问)
- aliyun-java-sdk-ecs ECS API(可以创建,查询ECS 实例,我用来查询名下的所有实例)
pom.xml
<dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.4.2</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-cms</artifactId> <version>7.0.4</version> </dependency> <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-ecs</artifactId> <version>4.16.11</version> </dependency>
2. 申请AccessKey
访问 AccessKey管理页面 创建成功后会获得最重要的数据AccessKeyId 和 AccessKeySecret 注意保存CSV文件,这个数据只会显示一次.别直接关闭提示窗
3. 创建请求
OpenAPI Explorer 可以生成简单SDK源码,非常适合用来测试
这里我创建一个查询
DescribeMetricLastDemo.java
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
import java.util.*;
import com.aliyuncs.cms.model.v20190101.*;
public class DescribeMetricLastDemo {
public static void main(String[] args) {
/** 创建配置文件
* regionId: 你的ECS的地域信息,我的是在华东杭州所以是"cn-hangzhou",可以在API页面查到其他地域的字符串,
* accessKeyId 和 accessSecret 则是上一步申请的字符串
*/
DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<accessKeyId>", "<accessSecret>");
// 创建发送请求的客户端
IAcsClient client = new DefaultAcsClient(profile);
//我需要查询指定监控对象的最新监控数据
//根据文档,我需要使用 DescribeMetricLastRequest 进行请求,基本上JDK里面,API名字+Request就是需要调用的对象
DescribeMetricLastRequest request = new DescribeMetricLastRequest();
//命名空间,表明监控数据所属产品,如 “acs_ecs_dashboard”,“acs_rds_dashboard”等
request.setNamespace("acs_ecs_dashboard");
//监控项名称。 根据"预设监控项参考",CUP 信息对应的是 CPUUtilization
request.setMetricName("CPUUtilization");
try {
//发送请求,得到对应response
DescribeMetricLastResponse response = client.getAcsResponse(request);
System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
}
阿里云API JDK 小结:
- API名称 + Request/Response就是需要使用的对象
- 使用都是分成2步,创建Request然后设置参数,然后通过
IAcsClient
发送 IAcsClient
创建后可以多次调用