前言 阿里云api使用
RDS和ECS的API使用方法相同,都是先生成request对象,然后set各种属性,最后通过AcsClient对象实现request请求获取response消息体即可。下边直接上实例代码:
点击(此处)折叠或打开
- from aliyunsdkrds.request.v20140815 import DescribeDBInstancesRequest
- from aliyunsdkrds.request.v20140815 import DescribeDBInstancePerformanceRequest
- time_format = "%Y-%m-%dT%H:%MZ"
- ……
- def getPerformance(client, n_minutes_before):
- m15_before = timeDelta(n_minutes_before)
- request = DescribeDBInstancePerformanceRequest.DescribeDBInstancePerformanceRequest()
- request.set_DBInstanceId("rm-xxxxxxxxxxxx")
- request.set_Key("MySQL_IOPS")
- request.set_StartTime(m15_before)
- request.set_EndTime(current_time)
- request.set_action_name("DescribeDBInstancePerformance")
- response = client.do_action_with_exception(request)
- response = json.loads(response)
- print(response)
坑之一
StartTime和EndTime的时间格式。
必须是ISO8601时间格式,形如“YYYY-mm-ddTHH:MMZ”(注意:只能到分钟,如果精确到秒回报错。。);
必须是UTC时区,由于我们这边跟UTC时区时间相差8小时,当前时间需要转换一下,如:
如果是通用型RDS,最多只能获取5分钟之前的数据,想要将刷新频率设置到1m/次需要额外收费。。
必须是ISO8601时间格式,形如“YYYY-mm-ddTHH:MMZ”(注意:只能到分钟,如果精确到秒回报错。。);
必须是UTC时区,由于我们这边跟UTC时区时间相差8小时,当前时间需要转换一下,如:
点击(此处)折叠或打开
- current_time = (datetime.now()-timedelta(hours=8)).strftime(time_format)
坑之二
无法获取实时数据。如果是通用型RDS,最多只能获取5分钟之前的数据,想要将刷新频率设置到1m/次需要额外收费。。