前两天看了下阿里云api的使用,测试了下使用api获取RDS性能监控数据,中间遇到了些坑,在此记录一下,以警后人!
前言 阿里云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小时,当前时间需要转换一下,如:
-
current_time = (datetime.now()-timedelta(hours=8)).strftime(time_format)
坑之二
无法获取实时数据。
如果是通用型RDS,最多只能获取5分钟之前的数据,想要将刷新频率设置到1m/次需要额外收费。。
阅读(1142) | 评论(0) | 转发(0) |